Você deve verificar o valor de retorno de gethostbyname
- ele retorna uma lista vazia se o host não for encontrado, e inet_ntoa
não pode lidar com isso.
Tente algo como o seguinte:
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";
}
Observe que sua sintaxe está incorreta, {}
são necessárias após a condição if. E eu não acredito que chomp
devolve nada, então esse teste é inválido. (E ==
é apenas para comparação, não atribuição).