Beefy Boxes and Bandwidth Generously Provided by pair Networks
The stupid question is the question not asked
 
PerlMonks  

•Re: improve ugly flow control

by merlyn (Sage)
on Sep 19, 2004 at 07:53 UTC ( #392137=note: print w/ replies, xml ) Need Help??


in reply to improve ugly flow control

Just a different try on this:

use List::Util qw(first); if (defined(my $try = first { $hash{$_} } @options)) { do_something($try); } else { log_failure(); }

-- Randal L. Schwartz, Perl hacker
Be sure to read my standard disclaimer if this is a reply.


Comment on •Re: improve ugly flow control
Download Code
Re^2: improve ugly flow control
by perrin (Chancellor) on Sep 19, 2004 at 20:52 UTC
    That's a neat idea. Unfortunately, in my real code, the $hash{$_} test is actually something expensive, so I need to stop as soon as one of the options works. I should have made a better example.
Re^2: improve ugly flow control
by Aristotle (Chancellor) on Sep 20, 2004 at 09:50 UTC

    I liked that quite a bit, but the structure has been bothering me, like with most other solutions: it feels to me like the failure case gets too much emphasis. I didn't know how to do any better when I first saw the post, though. But now I think I do:

    { my $try = first { $hash{ $_ } } @options; defined $try or ( log_failure(), last ); do_something( $try ); }

    Makeshifts last the longest.

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others imbibing at the Monastery: (7)
As of 2015-07-04 20:20 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 (60 votes), past polls