Beefy Boxes and Bandwidth Generously Provided by pair Networks
Don't ask to ask, just ask
 
PerlMonks  

Re: Continue block entry

by Gilimanjaro (Hermit)
on May 10, 2005 at 09:36 UTC ( #455481=note: print w/ replies, xml ) Need Help??


in reply to Continue block entry

Sound like you may want to use eval for this, and die instead of next:

foreach (@a) { eval { die 'reason1' if check_condition1(); do_some_stuff(); die 'reason2' if check_condition2(); do_more_stuff(); die 'reason3' if check_condition3(); play_solitaire(); do_something_if_all_ok(); }; # a *real* error, if it doesn't start with 'reason' die if $@ && $@ !~ /^reason/; # save reason; you never know what other evals happen my $reason = $@; # usual continue code here do_something_always(); if($reason) { only_if_reason1() if $@ eq 'reason1' } }

You may want to die with an object of some kind, to easily distinguish between 'real' error, and your type of conditions.

Update: corrected the die regex to Do The Right Thang


Comment on Re: Continue block entry
Download Code
Re^2: Continue block entry
by prowler (Friar) on May 12, 2005 at 00:02 UTC

    Thanks for the suggestion, but I assume you mean:

    die if $@ && $@ !~ /^reason/

    rather than '=~'.

    Prowler
     - Spelling is a demanding task that requies you full attention.

      yup. sorry. will update now...

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others having an uproarious good time at the Monastery: (5)
As of 2015-07-06 00:23 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (68 votes), past polls