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 heresomething
;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.)
Get Learning Perl on Win32 Systems now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.