PerlRocks6345 has asked for the wisdom of the Perl Monks concerning the following question:
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
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Need Help With Alarm And Eval
by afoken (Chancellor) on Dec 06, 2012 at 12:12 UTC | |
by PerlRocks6345 (Novice) on Dec 06, 2012 at 12:59 UTC | |
by afoken (Chancellor) on Dec 06, 2012 at 15:08 UTC | |
by PerlRocks6345 (Novice) on Dec 07, 2012 at 07:37 UTC | |
by afoken (Chancellor) on Dec 07, 2012 at 15:34 UTC |