When followed by a BLOCK, continue is actually a
flow control statement rather than a function. If there is a
continue BLOCK attached to a BLOCK (typically in a
while
or foreach
), it is always executed just before the
conditional is about to be evaluated again, just like the third part of
a for
loop in C. Thus it can be used to increment a loop variable,
even when the loop has been continued via the next
statement (which is similar to the C continue
statement).
last, next, or redo may appear within a continue block; last and redo behave as if they had been executed within the main block. So will next, but since it will execute a continue block, it may be more entertaining.
- while (EXPR) {
- ### redo always comes here
- do_something;
- } continue {
- ### next always comes here
- do_something_else;
- # then back the top to re-check EXPR
- }
- ### last always comes here
Omitting the continue section is equivalent to using an empty one, logically enough, so next goes directly back to check the condition at the top of the loop.
When there is no BLOCK, continue is a function
that falls through the current when
or default
block instead of
iterating a dynamically enclosing foreach
or exiting a lexically
enclosing given
. In Perl 5.14 and earlier, this form of
continue was only available when the
switch feature was enabled. See
feature and Switch Statements in perlsyn for more information.