use Modern::Perl; use Data::Dump qw/dump/; use Regexp::Assemble; my @tocheck = qw/Apple Corn Pie Fish/; my %checkfrom = ( Meat => 'Fish Apple Pork Bacon', Fruit => 'Apple Pie Orange Beef' ); my $ra = Regexp::Assemble->new; $ra->add( @tocheck ); for (values %checkfrom) { s/$ra//g; $_ = join ' ', split; # delete spurious spaces } say dump(\%checkfrom);