我的perl脚本中有这一行:
"$retrieveIps --fields FileserverIPS WHERE Fileserver LIKE '%NET%' | tr \"
\" \"\n\" | xargs -n1 host";
以上这一部分:
$retrieveIps --fields FileserverIPS WHERE Fileserver LIKE '%NET%'
应该给我这个输出:
NodeName1.comp.com NodeName2.comp.com
我想尽可能避免在我的脚本中使用shell命令。 我想知道是否有办法做这个' tr' ,' xargs'和'主持人' perl命令? 我试着在网上看,但找不到对我有用的东西。
这是必需的输出:
10.0.0.1
10.0.0.2
答案 0 :(得分:3)
您可以使用gethostbyname函数获取IP地址,并使用Socket :: inet_ntoa解压缩它:
use Socket;
my @hostnames
= `$retrieveIps --fields FileserverIPS WHERE Fileserver LIKE '%NET%' `;
print inet_ntoa(scalar gethostbyname $_), "\n" for @hostnames;
inet_ntoa
易于实施(但我不确定它是否适用于Perl 4):
sub inet_ntoa {
my ($ip) = @_;
return join '.', map ord, split //, $ip
}