in reply to Ping a list of servers

Command line ping runs as suid root -- this is required when using the icmp protocol, normal ping.

Net::Ping, by default, utilizes udp to attempt a connection to the echo port on the remote host. You may also attempt tcp connections to the echo service port.

When hosts are reported as "not returning ping requests" for your script, it means they aren't running the echo service.

In order to use icmp you will need to run your script as suid root -- otherwise you'll have to wrangle with return codes from the command line ping using system calls or backticks.

By the way, if there's a large number of hosts and a significant portion tend to be down, you might consider using something like merlyn's Parallel::ForkManager to ping hosts in parallel batches.

Matt

Update: after reading the docs, switched udp and tcp in my statements regarding the defaults.