my @keylist = sort keys %distro; my @hitAll4 = grep { $distro{$_} =~ /A\d+ B\d+ C\d+ D\d+/ } @keylist; my @missingD = grep { $distro{$_} !~ / D\d+/ } @keylist; # and so on.