my @a #### my @new_a; for my $i (0..$#a){ push (@new_a, $a[$i]) unless is_unwanted($a[$i]); } @a = @new_a; @new_a = (); #### my @a = ("bob", "bob", "martha", "bob"); for my $i (0..$#a){ splice (@a, $i, 1) if $a[$i] =~ m/bob/; } #@a is now ("bob", "martha"), but I don't want any "bob"s; #also I get harassed about uniniatialized values when I use warnings