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.)

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.