eval { local $SIG{ALRM}=sub { die "ALARM\n" }; # \n is required alarm 300; # give it 5 minutes # your code here alarm 0; # reset alarm }; if ($@ eq "ALARM\n") { print "Timed out!\n"; }