continue - optional trailing block in a while or foreach

- NAME
- SYNOPSIS
- DESCRIPTION

# NAME

continue - optional trailing block in a while or foreach

# SYNOPSIS

continue BLOCK

# DESCRIPTION

`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` will 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 semantically equivalent to using an empty one, logically enough. In that case, `next` goes directly back to check the condition at the top of the loop.

continue - optional trailing block in a while or foreach