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).