in reply to "return" to break out of a loop

sub foo { for (...) { return 1 if ...; } return 0; }
is actually a rather common construct. If you don't like it, you could use a flag variable.
sub foo { my $found = 0; for (...) { if (...) { $found = 1; last; } } return $found; }
You could even get rid of the last by changing the loop control. But everytime you change something from the original, it gets bigger and more complex, and therefore harder to read and more error prone.