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.use Sys::Hostname; $hostname = hostname();
[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.
Copyright © 2002 O'Reilly & Associates. All rights reserved.