Perl loop break FAQ: How do I break out of a Perl loop?
Problem: You're writing some Perl loop code (for, foreach, or while), and you have a condition where you need to break out of your loop early, and you quickly find out that Perl doesn't have a 'break' operator.
The Perl "break" statement
In many programming languages you use the break operator to break out of a loop like this, but in Perl you use the last
operator to break out of a loop, like this:
last;
While using the Perl last
operator instead of the usual break operator seems a little unusual, it can make for some readable code, as we'll see next.
A for loop example with last
Here's a Perl break/last example I just pulled out of an actual script. I simplified this a little bit, but in short, this foreach
loop was intended to let me push 10 items onto an array named @tags
, and then break out of the loop at that point:
my $counter = 1; foreach $foo (sort {$importHash{$b} <=> $importHash{$a}} (keys %importHash)) { # push the string $foo onto the @tags array push @tags, $foo; # break out of our perl loop when the counter reaches 10 last if ($counter++ == 10); }
I really like the last/if syntax shown above, but I should note that you can also use the Perl last
operator in a typical if/then statement if you prefer, like this:
if (SOME_TEST_CONDITION) { # break out of our perl loop last; }
Related - how to skip an element in a Perl loop
On a related note, if you just need to skip over the current loop iteration -- and stay in your Perl loop to work on the next element -- just use the Perl next
operator, like this:
if (SOME_TEST_CONDITION) { next; }
For more information, here's a link to my Perl for loop 'next' tutorial. Otherwise, I hope this Perl break/last example has been helpful.