* I rewrote the answer to include Net::Domain
* I changed the title to get rid of the slashes and use commas instead
* I added X<> entries. I'm not sure I need to give a little answer
that many keywords, though.
Index: perlfaq9.pod
===================================================================
RCS file: /cvs/public/perlfaq/perlfaq9.pod,v
retrieving revision 1.24
diff -u -d -r1.24 perlfaq9.pod
--- perlfaq9.pod 13 Oct 2005 19:43:13 -0000 1.24
+++ perlfaq9.pod 27 Oct 2005 20:46:57 -0000
@@ -596,29 +596,37 @@
$msg[$msgno] .= $_;
END { print @msg[ sort { $sub[$a] cmp $sub[$b] || $a <=> $b } (0
.. $#msg) ] }
-=head2 How do I find out my hostname/domainname/IP address?
+=head2 How do I find out my hostname, domainname, or IP address?
+X<hostname, domainname, IP address, host, domain, hostfqdn, inet_ntoa,
+gethostbyname, Socket, Net::Domain, Sys::Hostname>
-The normal way to find your own hostname is to call the C<`hostname`>
-program. While sometimes expedient, this has some problems, such as
-not knowing whether you've got the canonical name or not. It's one of
-those tradeoffs of convenience versus portability.
+(contributed by brian d foy)
-The Sys::Hostname module (part of the standard perl distribution) will
-give you the hostname after which you can find out the IP address
-(assuming you have working DNS) with a gethostbyname() call.
+The Net::Domain module, which is part of the standard distribution
starting
+in perl5.7.3, can get you the fully qualified domain name (FQDN), the
host
+name, or the domain name.
- use Socket;
- use Sys::Hostname;
- my $host = hostname();
- my $addr = inet_ntoa(scalar gethostbyname($host || 'localhost'));
+ use Net::Domain qw(hostname hostfqdn hostdomain);
+
+ my $host = hostfqdn();
-Probably the simplest way to learn your DNS domain name is to grok
-it out of /etc/resolv.conf, at least under Unix. Of course, this
-assumes several things about your resolv.conf configuration, including
-that it exists.
+The C<Sys::Hostname> module, included in the standard distribution
since
+perl5.6, can also get the hostname.
-(We still need a good DNS domain name-learning method for non-Unix
-systems.)
+ use Sys::Hostname;
+
+ $host = hostname();
+
+To get the IP address, you can use the C<gethostbyname> built-in
function
+to turn the name into a number. To turn that number into the dotted
octet
+form (a.b.c.d) that most people expect, use the C<inet_ntoa> function
+from the <Socket> module, which also comes with perl.
+
+ use Socket;
+
+ my $address = inet_ntoa(
+ scalar gethostbyname( $host || 'localhost' )
+ );
=head2 How do I fetch a news article or the active newsgroups?
--
brian d foy, [EMAIL PROTECTED]