32.40. Sys::Hostname
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.
[6] Which is available directly as the
unexported Sys::Hostname::ghname function, but don't tell anyone we
told you.
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.