http://qs321.pair.com?node_id=1046937


in reply to Perl's pearls

I was wanting something like this, so it was good to find. So how has 12 years changed things other than it still works?

Tech note D is of interest:

Creating the word signature with
   pack "C*", sort unpack "C*", $_
is faster than using
   join "", sort split //, $_;
With Perl 5.14.2, the join/sort/split version is actually faster now, only by a few hundredths of a second on my machine, but it is faster. This is on 917K words. It also generates a correct signature, while the pack version generates a bad signature. Changing the last line to foreach(sort(keys(%words))) { print "$_- $words{$_}\n"; } allows us to compare: The pack version works because it orders letters in the same way, but it doesn't order them in alphabetical order like it's supposed to. I'm not sure if this is a result of changes to perl as it's advanced thru time, or if it was that way originally. I don't have a version of perl from back in 2001 to test anyway.

I found the key generation error because I actually want the key to be available and need the letters to be in alphabetical order for another program.

Thanks for sharing!