@dict = qw (foo oof fff bar baz); $letters = 'ofo'; my %dict; push @{$dict{rle(sort split '',$_)}}, $_ for @dict; $words = $dict{rle(sort split '',$letters)} || []; print "$_\n" for @$words; #### my %dict; push @{$dict{join('', sort split '',$_)}}, $_ for @dict; $words = $dict{join('', sort split '',$letters)} || []; print "$_\n" for @$words;