package Sys::Hostname::FQDN; #use 5.006; use strict; #use warnings; use Carp; use vars qw($VERSION @ISA @EXPORT_OK); $VERSION = do { my @r = (q$Revision: 0.07 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r }; require Exporter; require DynaLoader; #use AutoLoader; @ISA = qw(Exporter DynaLoader); @EXPORT_OK = qw ( asciihostinfo gethostinfo inet_ntoa inet_aton fqdn short ); bootstrap Sys::Hostname::FQDN $VERSION; # Preloaded methods go here. sub DESTROY {}; # Autoload methods go after =cut, and are processed by the autosplit program. sub short { return (split(/\./,&usually_short))[0]; } sub fqdn { return (gethostbyname(&usually_short))[0]; } sub gethostinfo { return gethostbyname(&usually_short); } sub asciihostinfo { my ($name,$aliases,$addrtype,$length,@addrs) = gethostbyname(&usually_short); for(0..$#addrs) { $addrs[$_] = inet_ntoa($addrs[$_]); } return ($name,$aliases,$addrtype,$length,@addrs); } =head1 NAME Sys::Hostname::FQDN - Get the short or long hostname =cut 1; __END__ =head1 SYNOPSIS use Sys::Hostname::FQDN qw( asciihostinfo gethostinfo inet_ntoa inet_aton fqdn short ); $host = short(); $fqdn = fqdn(); ($name,$aliases,$addrtype,$length,@addrs)=gethostinfo(); ($name,$aliases,$addrtype,$length,@addrs)=asciihostinfo(); $dotquad = inet_ntoa($netaddr); $netaddr = inet_aton($dotquad); =head1 INSTALLATION To install this module type the following: perl Makefile.PL make make test make install Solaris users, see the 'hints' subdirectory if you have problems with the build. =head1 DESCRIPTION B uses the host 'C' library to discover the (usually) short host name, then uses (perl) gethostbyname to extract the real hostname. The results from gethostbyname are exported as B and B as a convenience since they are available. Similarly, the 'C' library functions B and B are exported. =over 4 =item $host = short(); returns the host part of this host's FQDN. =item $fqdn = fqdn(); returns the fully qualified host name of this host. =item ($name,$aliases,$addrtype,$length,@addrs)=gethostinfo(); returns: $name fully qualifed host name of this host. $aliases alternate names for this host. $addrtype The type of address; always AF_INET at present. $length The length of the address in bytes. @addrs array of network addresses for this host in network byte order. =item ($name,$aliases,$addrtype,$length,@addrs)=asciihostinfo(); returns: $name fully qualifed host name of this host. $aliases alternate names for this host. $addrtype The type of address; always AF_INET at present. $length The length of the address in bytes. @addrs array of dot quad IP addresses for this host. =item $dotquad = inet_ntoa($netaddr); input: packed network address in network byte order. returns: dot quad IP address. =item $netaddr = inet_aton($dotquad); input: dot quad IP address. returns: packed network address in network byte order. =back =head1 DEPENDENCIES none =head1 EXPORT None by default =head1 EXPORT_OK asciihostinfo gethostinfo inet_ntoa inet_aton fqdn short =head1 ACKNOWLEDGEMENTS The workaround for systems that do not have 'inet_aton' is taken directly from Socket.xs in the Perl 5 kit for perl-5.8.0 by Larry Wall, copyright 1989-2002. Thank you Larry for making PERL possible for all of us. =head1 AUTHOR Michael Robinton =head1 COPYRIGHT AND LICENCE Copyright 2003, Michael Robinton This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. =cut