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"; } } #### use strict; my $errorName="alarm\n"; my $time=5; eval { On($time,$errorName); #dostuff(); sleep(10); }; my $error= $@; print "error ".$error."error \n"; Off($error,$errorName); sub On { my $time=$_[0]; my $errorName=$_[1]; local $SIG{ALRM} = sub { die "$errorName" }; alarm $time; } 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"; } }