use IO::Socket; sub doit { $ip1="210.22.106.31"; $host="$ip1"; $port="23"; $fnd=""; $pong=`ping -c 3 $host`; $fnd=($pong=~m/(..)%/gi); $xcd=$1; if ($xcd!=00) { $SIG{ALRM} = \&timed_out; eval { alarm (3); $remote = IO::Socket::INET -> new ( Proto => "tcp", PeerAddr => $host, PeerPort => $port, Timeout => 2 ) or die "." ; alarm (0); }; sub timed_out { die "."; } $| = 1; if ($remote) { close $remote; print "Socket ready...\n"; } else { print "Try again...\n"; } } else { print "Pinged timed out!\n"; }