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.