use Sys::Hostname; $hostname = hostname();
The Sys::Hostname
module supplies just one
function, hostname
, which makes up for that fact by
busting its behind to try to figure out what your current host calls
itself. On those systems that support the standard
gethostname (2) syscall, this is used,
as it's the most efficient method.[6] On other systems, output from the standard
hostname (1) is used. On still others,
it calls the uname (3) function in your
C library, which is also accessible as POSIX::uname
from Perl. If these strategies all fail, more valiant attempts are
made. Whatever your native system thinks makes sense, Perl tries its
best to go along with it. On some systems, this hostname may not be
fully qualified with the domain name; see the
Net::Domain
module from CPAN if you need
that.
Another consideration is that hostname
returns just one value, but your system could have multiple network
interfaces configured, so you might not get back the name associated
with the interface you're interested in if you're planning on using
this module for certain sorts of socket programming. There are cases
where you'll probably have to scrounge around in the output from the
ifconfig (8) command, or your system's
moral equivalent.
[6] Which is available directly as the unexported
Sys::Hostname::ghname
function, but don't tell
anyone we told you.