note
Zaxo
<p>That's an anagram problem, which has a canonical answer. First absorb your dictionary in a hash:
<code>
my %words;
{
open my $fh, '<', '/path/to/dict.txt' or die $!;
while <$fh> {
chomp;
my $key = join '', sort split '';
push @{$words{$key}}, $_;
}
}
</code>
</p>
<p>That collects your data, now just rearrange your input word to make a key and print the associated words:
<code>
my $word = <>; # or however you get it
chomp;
$word = join '', sort split '', $word;
print "@{$words{$word}}\n";
</code>
Alphabetizing and mushing together the characters of a word provides a key for anagrams..</p>
<p>If this is used a lot or the dictionary is big, you may want to keep the "hash" in a database.</p>
<div class="pmsig"><div class="pmsig-82147">
<p>After Compline,<br/>Zaxo</p>
</div></div>
638220
638220