in reply to Sorting hashes on non-keys
sort can take a block of code as its first argument, which allows you to control what the sort order should be by providing a template of how you would compare two values $a and $b. The default comparison is { $a cmp $b } which compares two values as strings to sort them in ASCII (er, codepoint) order.
So to get the right comparison block for your requirement, you need to construct code that assumes $a and $b have been provided with the items you are sorting (the hash keys in this case) and construct a block that compares the elements you need.
Given a hash key in $a, the 'from' value will be in $mailarray{$a}{"from"}, likewise for $b, and this leads to the sort:
@sortedkeys = sort { $mailarray{$a}{"from"} cmp $mailarray{$b}{"from"} } keys %mailarray;
If you need greater speed, a complex sort comparator can benefit from the Schwartzian transform.
Update: missed out "sort" :(
Hugo
|
|---|