use strict; use warnings; use Data::Dumper; my %hash = ( a => 1, n => 1, z => 1, ); my @ary = qw( a b n m y z ); for my $key ( keys %hash ) { for my $elem (@ary) { next if not defined $elem; if ( $elem =~ $key ) { $elem = undef; } } } print Dumper \@ary; #### $VAR1 = [ undef, 'b', undef, 'm', 'y', undef ];