for (0..$#array) { if (foo($array[$_])) { splice @array, $_, 0; # remove it. } else { print "$array[$_] returned false\n"; next; } other_stuff(); } #### my $i = 0; for my $item (@array) { if (foo($item)) { splice @array, $i, 0; # remove it. } else { print "$item returned false\n"; $i++; next; } other_stuff(); }