in reply to Net::Ping on Windows

My problem is that if I use "tcp" as $protocol some hosts result Unreachable (but with windows command "ping" same hosts are reachable);

"tcp" will open a connection to the remote host's echo service (port 7), so if that's not open you won't get the results you want.

If I use "icmp" as $protocol all hosts are reachable (but with windows command "ping" some hosts are not reachable or not exist);

That's a bit weird - does it work without threads?

Anyway, if you take your system's ping as reference, why not just use that (trough Net::Ping::External)?