How do I break an outer loop from an inner one in Perl?
-
02-10-2019 - |
Question
Suppose I have a piece of Perl code like:
foreach my $x (@x) {
foreach my $y (@z) {
foreach my $z (@z) {
if (something()) {
# I want to break free!
}
# do stuff
}
# do stuff
}
# do stuff
}
If something()
is true, I would like to break ('last') all the loops.
how can I do that?
I thought of two options, both of which I don't like:
Using something GOTO
Adding a boolean variable which will mark something()
is true, check this var in each of the loops before they resume and last()
if it's true.
Any suggestions or thoughts?
Thanks.
Solution
Use a label:
OUTER:
foreach my $x (@x) {
foreach my $y (@z) {
foreach my $z (@z) {
if (something()) {
last OUTER;
}
# do stuff
}
# do stuff
}
# do stuff
}
OTHER TIPS
The "last LABEL" syntax is described in the documentation.
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow