Unfortunately, it's still altering an array (or it might have been a hash) over which you're iterating and so still incorrect:
c:\@Work\Perl\monks>perl -wMstrict -le
"my @colors = qw(red green blue yellow pink purple brown);
my @drop = qw(pink purple);
while ( my ($num, $val) = each @colors ) {
if ($val eq $drop[0] or $val eq $drop[1]) {
splice (@colors, $num, 1);
}
}
print qq{@colors};
"
red green blue yellow purple brown
Update: each sez:
If you add or delete a hash's elements while iterating over it, the effect on the iterator is unspecified; for example, entries may be skipped or duplicated--so don't do that.
The same obviously applies to arrays. The
each doc goes on to discuss a specific exception involving
delete and hashes, but still no joy WRT arrays.
Give a man a fish: <%-{-{-{-<