【发布时间】:2018-09-11 13:52:18
【问题描述】:
我正在尝试获取主机的所有 IP 地址。
这是 nslookup 的输出:
>>nslookup site.com
Server: 8.8.8.8
Address: 8.8.8.8#53
Non-authoritative answer:
Name: site.com
Address: 1.1.1.1
Name: site.com
Address: 2.2.2.2
我试过这段代码:
use Socket;
use Data::Dumper;
my $name = "site.com";
@addresses = gethostbyname($name) or die "Can't resolve $name: $!\n";
@addresses = map { inet_ntoa($_) } @addresses[4 .. $#addresses];
print Dumper(\@addresses);
这是输出:
['1.1.1.1'];
无论如何要同时获得1.1.1.1 和2.2.2.2?
【问题讨论】:
-
请注意,
perldoc -f gethostbyname告诉我们:“确保在 SCALAR 上下文中调用“gethostbyname”,并检查其返回值是否已定义。” 您的代码示例两者都没有. -
@JamesEKeenan 当您不关心列表上下文
gethostbyname返回的所有其他信息时,这是为了将主机名解析为单个 IP 地址。