my @arr = qw/ foo foozle bar bar2 foo bar foo /; for (my $i=0; $i<@arr; $i++) { splice(@arr, $i, 1) if ($arr[$i] =~ /bar/); } print "$_\n" for (@arr); ## output: bar2 is NOT removed #### @chroms = grep { ! /[pqxy]/i } @chroms; #### for (my $i=0; $i<@chroms; $i++) { splice(@chroms, $i--, 1) if not $chroms[$i] =~ /[pqxy]/i; } ####