Desde que você postou isso no Unix & Site Linux, em vez de StackOverflow, eu estou querendo saber se algo como isto não é o que você está procurando:
cat hostlist.txt | xargs resolveip -s
Isso só retornará um endereço IP.
Alguns nomes de host terão vários endereços IP associados a eles:
$ host www.google.com
www.google.com is an alias for www.l.google.com.
www.l.google.com has address 74.125.227.18
www.l.google.com has address 74.125.227.17
www.l.google.com has address 74.125.227.16
www.l.google.com has address 74.125.227.20
www.l.google.com has address 74.125.227.19
Para obter apenas a lista de IPs, uma maneira de fazer isso é:
host <hostname> | grep "has address" | awk '{print $4}'
Se você quiser ficar com Perl, usando resolveip:
$ipaddr = qx(resolveip -s $hostname);
Ou para obter todos os IPs, sem executar comandos de shell:
use Socket;
@ipaddrs = map { inet_ntoa($_) } (gethostbyname($hostname))[4,];