Beefy Boxes and Bandwidth Generously Provided by pair Networks
Pathologically Eclectic Rubbish Lister
 
PerlMonks  

Re^2: Need Help With Alarm And Eval

by PerlRocks6345 (Novice)
on Dec 06, 2012 at 12:59 UTC ( #1007559=note: print w/ replies, xml ) Need Help??


in reply to Re: Need Help With Alarm And Eval
in thread Need Help With Alarm And Eval

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


Comment on Re^2: Need Help With Alarm And Eval
Re^3: Need Help With Alarm And Eval
by afoken (Parson) on Dec 06, 2012 at 15:08 UTC
    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 ?

        I want subs to switch on and off my alarm so that i can call them when needed

        Why? The code you showed first is more or less the usual code for having a timeout in some long running code. (You do know the example in perlipc, right?) If you don't need a timeout, just don't mess with alarm and $SIG{'ALRM'} at all.

        In code:

        withTimeout(30,\&doSomething,sub { die 'Oooops, doSomething was too sl +ow' }); # <-- timeout after 30 seconds doSomething(); # <-- no timeout here

        If you still think that you need to "switch on and off", please explain your actual problem.

        Alexander

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

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others pondering the Monastery: (15)
As of 2014-09-19 18:16 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    How do you remember the number of days in each month?











    Results (144 votes), past polls