eval { local $SIG{ALRM} = sub { die "alarm\n" }; # NB \n required alarm 5; my $sock = new Net::SOCKS(socks_addr => $socksserver, socks_port => $socksport, protocol_version => 5); alarm 0; }; die if $@ && $@ ne "alarm\n"; # propagate errors if ($@) { print("\nTIME-OUT\n"); } else { my $con = $sock->connect(peer_addr => '10.1.1.3', peer_port => 23); #other parts of my code. }