=over =item continue BLOCK X =item continue When followed by a BLOCK, L|/continue BLOCK> is actually a flow control statement rather than a function. If there is a L|/continue BLOCK> BLOCK attached to a BLOCK (typically in a C or C), it is always executed just before the conditional is about to be evaluated again, just like the third part of a C loop in C. Thus it can be used to increment a loop variable, even when the loop has been continued via the L|/next LABEL> statement (which is similar to the C L|/continue BLOCK> statement). L|/last LABEL>, L|/next LABEL>, or L|/redo LABEL> may appear within a L|/continue BLOCK> block; L|/last LABEL> and L|/redo LABEL> behave as if they had been executed within the main block. So will L|/next LABEL>, but since it will execute a L|/continue BLOCK> 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 L|/continue BLOCK> section is equivalent to using an empty one, logically enough, so L|/next LABEL> goes directly back to check the condition at the top of the loop. When there is no BLOCK, L|/continue BLOCK> is a function that falls through the current C or C block instead of iterating a dynamically enclosing C or exiting a lexically enclosing C. In Perl 5.14 and earlier, this form of L|/continue BLOCK> was only available when the L feature|feature/The 'switch' feature> was enabled. See L and L for more information. =back