{ print("for: "); my $pass; local $_ = 'fred'; for (; /./g ;) { print("[$&]"); redo if ++$pass == 3; } print("\n"); } { print("while: "); my $pass; local $_ = 'fred'; while (/./g) { print("[$&]"); redo if ++$pass == 3; } print("\n"); } #### for: [f][r][e][][d] while: [f][r][e][][d] #### { print("while: "); my $pass; local $_ = 'f'; while (/./g) { print("[$&]"); redo if ++$pass == 1; } print("\n"); } { print("bare: "); my $redid; local $_ = 'fred'; { /./g; { print("[$&]"); redo if !$redid++; } } print("\n"); } #### while: [f][] bare: [f][f] #### { print("norm: "); local $_ = 'fred'; while (print("<$&>"), /./g) { print("[$&]"); } print("\n"); } { print("next: "); my $pass; local $_ = 'fred'; while (print("<$&>"), /./g) { print("[$&]"); next if ++$pass == 3; } print("\n"); } { print("redo: "); my $pass; local $_ = 'fred'; while (print("<$&>"), /./g) { print("[$&]"); redo if ++$pass == 3; } print("\n"); } #### norm: <>[f][r][e][d] next: <>[f][r][e]<>[d] redo: <>[f][r][e][]<>[d] #### { print("norm: "); local $_ = 'fred'; for (; /./g ; print("<$&>"),1) { } print("\n"); } { print("next: "); local $_ = 'fred'; for (; /./g ; print("<$&>"),1) { next } print("\n"); } #### norm: next: <><><><> #### print("norm: "); for (my $i; $i ? $i<2 : 'a'=~/./g; ++$i) { print("[$&]"); } print("\n"); print("next: "); for (my $i; $i ? $i<2 : 'a'=~/./g; ++$i) { print("[$&]"); next; } print("\n"); #### norm: [a][a] next: [a][]