See sort, which demonstrates how to create a custom sort routine:
Output:use strict; use warnings; use feature 'say'; my $free_space = { node1 => { cores => 12, mem => 200 }, node2 => { cores => 12, mem => 500 }, node3 => { cores => 10, mem => 600 }, node4 => { cores => 11, mem => 500 }, node5 => { cores => 16, mem => 800 }, node6 => { cores => 16, mem => 800 }, }; for ( sort my_sort keys %{ $free_space } ) { say "$free_space->{$_}->{'cores'} $free_space->{$_}->{'mem'} $_"; } sub my_sort { $free_space->{$b}->{'cores'} <=> $free_space->{$a}->{'cores'} || $free_space->{$b}->{'mem'} <=> $free_space->{$a}->{'mem'} || $a cmp $b }
$ perl 1205589.pl 16 800 node5 16 800 node6 12 500 node2 12 200 node1 11 500 node4 10 600 node3
Hope this helps!
In reply to Re: sort HoH by second level values in specific order
by 1nickt
in thread sort HoH by second level values in specific order
by lener
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |