* 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]

Reply via email to