http://qs1969.pair.com?node_id=50522

While trying to solve an evilly cryptic crossword over Christmas, I idly remarked that it would be a whole lot easier to solve if I had my laptop, then i could use "grep '^..b..s..c$' /usr/share/dict/words" instead of one those 'crossword solver' books, and that I could probably write an anagram solver in a line of Perl.
Meeting a certain amount of disbelief, I decided to prove a point ;-P

(disclaimer: employ caution in using the code below with more than nine letters - generating the hash is order N! - it takes ~six minutes on my PII-300 to do a ten-letter word, and can result in treacle-like system loads)
perl -e 'sub c { my $w = shift; if ($#_) { for $i (0..$#_) { my @w = @ +_; &c ($w . splice (@w, $i, 1), @w); } } else { $p{ $w . $_[0] } = q( +) } }; &c ( q(), split //, $ARGV[0] ); $\ = qq(\n); open D, q(/usr/sh +are/dict/words); while(<D>) { chomp; s!\s+!!; print if exists $p{$_}; + }' ___LETTERS___