$SIG{ALRM} = sub { #Your code here }; eval { alarm(60); # Your code will be executed in 60 seconds # do something here # anytime during this 60 sec you can cancel the alarm with alarm(0) }; #### #!/usr/local/bin/perl -w use strict; use IO::Socket; { my $timeout = 0; my $sock = undef; $SIG{ALRM} = sub {$timeout = 1; die}; eval { alarm (2); $sock = new IO::Socket::INET(PeerAddr=> '10.1.1.18',PeerPort => 29,); alarm (0); } die "Can't open socket: timeout=$timeout\n" if ($timeout or !$sock); print "I would print to the socket now, if I knew what I was connected to\n"; close ($sock); }