use Socket; use Net::hostent; print inet_ntoa(gethost("www.perl.com")->addr); # prints 208.201.239.50 printf "%vd", gethost("www.perl.com")->addr; # same thing print gethost("127.0.0.1")->name; # prints localhost use Net::hostent ':FIELDS'; if (gethost($name_or_number)) { print "name is $h_name "; print "aliases are $h_aliases "; print "addrs are ", join ", " => map { inet_ntoa($_) } @h_addr_list; }
This module's default exports override the core
gethostbyname
and gethostbyaddr
functions, replacing them with versions that return a
Net::hostent
object (or undef
on
failure). This object has attribute accessor methods that return the
like-named structure field name from the C library's struct
hostent
from netdb.h:
name
, aliases
,
addrtype
, length
, or
addr_list
. The aliases
and
addr_list
methods return array references; the rest
return scalars. The addr
method is equivalent to
the initial element in the addr_list
array
reference. The gethost
function is a frontend that
forwards a numeric argument to gethostbyaddr
by way
of the Socket::inet_aton
function
and the rest to gethostbyname
. As with the other
semipragmatic modules that override list-returning built-ins, if you
import the ":FIELDS
" tag, you can access scalar or
array package variables by the same names as the method calls by using
a leading "h_
". This still overrides your core
functions, though.