http://qs321.pair.com?node_id=392124

perrin has asked for the wisdom of the Perl Monks concerning the following question:

I have a situation where I need to try multiple things and if any of them succeed I want to stop. However, I also need to do something if none of them succeed. I am currently using a very ugly construct kind of like this:
my $success = 0; foreach my $try (@options) { if (exists $hash{$try}) { do_something($try); $success = 1; last; } } if (!$success) { log_failure(); }
Can anyone suggest a nicer way to do this? I particularly dislike the use of the $success flag. In my real code, I have many conditions to check and have to put the flag setting code and the "last" statement after each one, which feels redundant.