my $i=0; while ($i < @array) { if (keep($array[$i]) { print "keeping $array[$i]\n"; $i++; } else { my $x = splice(@array,$i,1); print "discarding $x\n"; } }