continue BLOCK continue 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.