my @array = qw( a b c d c ); my $delete = 'c'; # search for index of elements which are equal to $delete my @to_delete = grep { $array[$_] eq $delete } 0 .. $#array; # delete elements from array (begin with biggest index, because we modify @array) splice( @array, $_, 1 ) for reverse @to_delete; # check what is left print $_,"\n" for @array;