http://www.perlmonks.org?node_id=970582


in reply to Sorting a hash of hashes

Try this

## Fort test1 ## sort in descending order by value1, select first @values1 = map { $_, $HoH{$_}{'Test1'}{'value1'} } sort { $HoH{$b}{'Test1'}{'value1'} <=> $HoH{$a}{'Test1'}{'value1'} + } keys %HoH; ## sort in descending order by value2, select first @values2 = map { $_, $HoH{$_}{'Test1'}{'value2'} } sort { $HoH{$b}{'Test1'}{'value2'} <=> $HoH{$a}{'Test1'}{'value2'} + } keys %HoH; print "Fort Test1\n"; print " ", $values1[0], " has value1=", $values1[1], "\n"; print " ", $values2[0], " has value2=", $values2[1], "\n"; ## For test2 ## sort in descending order by value1, select first @values1 = map { $_, $HoH{$_}{'Test2'}{'value1'} } sort { $HoH{$b}{'Test2'}{'value1'} <=> $HoH{$a}{'Test2'}{'value1'} + } keys %HoH; ## sort in descending order by value2, select first @values2 = map { $_, $HoH{$_}{'Test2'}{'value2'} } sort { $HoH{$b}{'Test2'}{'value2'} <=> $HoH{$a}{'Test2'}{'value2'} + } keys %HoH; print "Fort Test2\n"; print " ", $values1[0], " has value1=", $values1[1], "\n"; print " ", $values2[0], " has value2=", $values2[1], "\n";

Enjoy!