Learning Perl on Win32 Systems

Learning Perl on Win32 SystemsSearch this book
Previous: 9.2 The next StatementChapter 9
Miscellaneous Control Structures
Next: 9.4 Labeled Blocks
 

9.3 The redo Statement

The third way you can jump around in a looping block is with redo. This construct causes a jump to the beginning of the current block (without reevaluating the control expression), like so:

while (somecondition) {
        # redo comes here
        something;
        something;
        something;
        if (somecondition) {
            somestuff;
            somestuff;
            redo;
        }
        morething;
        morething;
        morething;
}

Once again, the if block doesn't count - just the looping blocks.

With redo, last, and a naked block, you can make an infinite loop that exits out of the middle, like so:

{
        startstuff;
        startstuff;
        startstuff;
        if (somecondition) {
            last;
        }
        laterstuff;
        laterstuff;
        laterstuff;
        redo;
}

This logic would be appropriate for a while-like loop that needed to have some part of the loop executed as initialization before the first test. (In a later section entitled "Expression Modifiers," we'll show you how to write that if statement with fewer punctuation characters.)


Previous: 9.2 The next StatementLearning Perl on Win32 SystemsNext: 9.4 Labeled Blocks
9.2 The next StatementBook Index9.4 Labeled Blocks