- 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