next, last and redo can only be used to leave or restart a loop block. You can't use them in blockless loops like EXPR while EXPR; and EXPR for EXPR;. Remember, do is just another function.
next, last and redo can't be used to leave or restart a blockless while loop (EXPR while EXPR;). Remember, do is just another function.
Update: My initial explanation was incorrect. They work with blockless foreach and counting loops (EXPR for EXPR;).
>perl -wle"print('x'),last while 1; print('y');" x Can't "last" outside a loop block at -e line 1. >perl -wle"print('x'),last for qw(a b c); print('y');" x y
>perl -wle"do { print('x'); last } while 1; print('y');" x Can't "last" outside a loop block at -e line 1. >perl -wle"do { print('x'); last } for qw(a b c); print('y');" x y
That's rather inconsistent.
In reply to Re: do while loop isn't a really loop?
by ikegami
in thread do while loop isn't a really loop
by appleii
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |