#UNTESTED RESULT: foreach my $wrd(@result) { my %seen; $seen{$_}++ for (split //,lc $_); foreach my $ltr (keys %seen) { next RESULT if ($seen{$ltr} > $master_letter_freq{$ltr}); } print "$_\n"; }