Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl: the Markov chain saw
 
PerlMonks  

Re: Need Help With Alarm And Eval

by afoken (Parson)
on Dec 06, 2012 at 12:12 UTC ( #1007554=note: print w/ replies, xml ) Need Help??


in reply to Need Help With Alarm And Eval

The problem is local inside sub On. Perl restores $SIG{'ALRM'} as soon as On returns. You have no other handler for that signal, so the default handler kicks in and kills perl.

Alexander

--
Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so". ;-)


Comment on Re: Need Help With Alarm And Eval
Select or Download Code
Re^2: Need Help With Alarm And Eval
by PerlRocks6345 (Novice) on Dec 06, 2012 at 12:59 UTC

    Hey thanks a lot for your reply removed local and every thing worked perfectly!!!! Thanks a lot!!!!!

      removed local and every thing worked perfectly

      No, it doesn't. The On function sets the signal handler globally, for ever, even after eval has finished. You want local $SIG{'ALRM'} inside that eval.

      The extra subs don't make your code any clearer. I think you should keep alarm and local $SIG{'ALRM'} inside the eval.

      You could also consider writing a generic timeout function like this:

      # untested sub withTimeout { my ($timeout,$worker,$timeouthandler)=@_; eval { local $SIG{'ALRM'}=sub { die "TIMEOUT" }; alarm($timeout); $worker->(); alarm(0); }; if ($@ and $@=~/TIMEOUT/) { $errorhandler->(); } }

      Alexander

      --
      Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so". ;-)

        Hey Thank you.My problem is ,I want subs to switch on and off my alarm so that i can call them when needed. Any suggestion how to do that ?

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1007554]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others chilling in the Monastery: (11)
As of 2014-10-02 13:35 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    What is your favourite meta-syntactic variable name?














    Results (60 votes), past polls