#!/usr/bin/perl use IO::Socket; $st_ip = @ARGV[0] || die "Usage: $0 [start_ip] [end_ip] [port]\n"; $end_ip = @ARGV[1]; $port = @ARGV[2]; for ($ip = $st_ip; $ip <= $end_ip; $ip++) { $socket = IO::Socket::INET->new (PeerAddr => $ip, PeerPort => $port, Proto => 'tcp'); if ($socket) { print "\n[$ip] Port $port is open\n"; } else {close($socket);} close($socket); } Вот исходник. Почему то, если указать любой адрес в качестве первого параметра (начальный адрес), он выведет что на этой машине открыт указанный порт. В чем ошибка? P.S. Хорошо было бы если бы кто нибудь протестил его в локалке. Спасибо!