in reply to Re: foreach argument modification inside loop, followed by return from loop
in thread foreach argument modification inside loop, followed by return from loop

Acutally, it's more like:

my @a = ( 1, 2, 3, 4, 2, 5, 7 ); my $last = $#a; my $i = 0; while( $i <= $last ){ if( $a[$i] == 2 ){ $last --; last if $i > $last; } }continue{ $i ++; } $#a = $last;
  • Comment on Re^2: foreach argument modification inside loop, followed by return from loop
  • Download Code

Replies are listed 'Best First'.
Re^3: foreach argument modification inside loop, followed by return from loop
by rjt (Curate) on Jul 10, 2013 at 13:19 UTC
    Actually, it's more like:

    No, it isn't.

    The OP's code stops at the first occurrence. Yours does not. Hence, you (may) end up removing additional elements, per your own example:

    Test code as copied from original nodes:

    Output:

    shawnhcorey: 1 2 3 4 2 OP vsespb: 1 2 3 4 2 5

    Anyway, this is moot now that the OP has posted actual code which uses splice to remove an internal element rather than the last element via pop.