- gethostbyname NAME
这个函数把一个网络主机名翻译成它的对应地址(以及其他名字)。其返回值在列表环境里是:
($name, $aliases, $addrtype, $length, @addrs) = gethostbyname ($remote_hostname);
这里的 @addrs 是一个裸地址的列表。在互联网域,每个地址(因历史原因)是四个字节长,可以用下面方法解包的东西:
($a, $b, $c, $d) = unpack('C4', $addrs[0]);
你可以用带 v 修饰词的 sprintf 把它们直接转换成向量符号:
$dots = sprintf "%vd", $addrs[0];
在标量环境里,gethostbyname 只返回主机地址:
use Socket; $ipaddr = gethostbyname($remote_host); printf "%s has address %s\n", $remote_host, inet_ntoa($ipaddr);
参阅第十六章里的“套接字”一节获取另外一种方法。Net::hostent