Beefy Boxes and Bandwidth Generously Provided by pair Networks
Just another Perl shrine
 
PerlMonks  

Re^2: Sort Hash of Hash numerically

by duelafn (Priest)
on Jun 13, 2011 at 14:33 UTC ( #909390=note: print w/ replies, xml ) Need Help??


in reply to Re: Sort Hash of Hash numerically
in thread Sort Hash of Hash numerically

Is reverse sort optimized away (it would be cool if it swapped the meaning of $a and $b) or do you really mean:

for (sort { $HoH{$b}{head_count} <=> $HoH{$a}{head_count} } keys %HoH) + { print "$_ House Type: $HoH{$_}{house_type} Head Count: $HoH{$_}{he +ad_count}\n"; }

Update: toolic++. I went searching for the definition of "newer perls" and found that this optimization has been around for some time. From perl586delta:

reverse sort ... is now optimized to sort in reverse, avoiding the generation of a temporary intermediate list.

for (reverse @foo) now iterates in reverse, avoiding the generation of a temporary reversed list.

Good Day,
    Dean


Comment on Re^2: Sort Hash of Hash numerically
Select or Download Code
Replies are listed 'Best First'.
Re^3: Sort Hash of Hash numerically
by toolic (Bishop) on Jun 13, 2011 at 14:50 UTC
    I really meant to use reverse. According to Perl::Critic::Policy::BuiltinFunctions::ProhibitReverseSortBlock
    Conway says that it is much clearer to use reverse than to flip $a and $b around in a sort block. He also suggests that, in newer perls, reverse is specifically looked for and optimized, and in the case of a simple reversed string sort, using reverse with a sort with no block is faster even in old perls.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://909390]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others romping around the Monastery: (19)
As of 2015-07-30 16:21 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (273 votes), past polls