use strict; my $errorName="alarm\n"; my $time=5; eval { local $SIG{ALRM} = sub { die "$errorName" }; alarm $time; sleep(10); }; my $error= $@; Off($error,$errorName); sub Off{ my $error=$_[0]; my $errorName=$_[1]; if( $error && $error eq "$errorName") { warn "Timed out!!!\n"; exit ; } else { alarm 0; print " you can continue"; } }