パスワード:
foreach $hostname (@hostnameUniqueSorted){
$ipaddr = inet_ntoa((gethostbyname($hostname))[4]);
if(chomp($ipaddr) =~ '^$') $ipaddr == "ip not avail"; <-- doesn't work
}
ホストがIPアドレスを返さない場合は中止され、次のようになります。
Usage: Socket::inet_ntoa(ip_address_sv) at ./abc line 24.
これをキャプチャして$ ipaddrに "ip notvail"を割り当てるにはどうすればよいですか?
最後の行を追加しましたが、動作しません。
答え1
戻り値を確認する必要がありますgethostbyname
。ホストが見つからない場合は空のリストを返し、inet_ntoa
問題を処理できません。
以下を試してください。
foreach my $hostname (@hostnameUniqueSorted) {
my @host = gethostbyname($hostname);
if (scalar(@host) == 0) {
$ipaddr = "not found";
} else {
$ipaddr = inet_ntoa($host[4]);
}
print $hostname, " => ", $ipaddr, "\n";
}
構文が正しくありません。{}
if条件の後に構文が必要です。そして何も返されないと思うので、chomp
テストは無効です。 (そして==
割り当て用ではなく比較用にのみ使用されます。)