Hi Monks the code below works perfectly
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"; } }
But when I make it to subroutines as this
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"; } }
It does not work as expected instead of throwing the warning message it throws "Terminating on signal SIGALRM(14)" Need your help Monks.Thank you in advance
In reply to Need Help With Alarm And Eval by PerlRocks6345
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |