in reply to sort HoH by second level values in specific order
Create an array in the output format you want and sort that.
poj#!/usr/bin/perl use strict; my $free_space = { node3 => { cores => 11, mem => 200 }, node10 => { cores => 10, mem => 900 }, node12 => { cores => 11, mem => 500 }, node23 => { cores => 12, mem => 350 }, node456 => { cores => 12, mem => 400 }, node534 => { cores => 12, mem => 400 }, }; my @CoreMemNodes=(); for (keys %$free_space){ my $hr = $free_space->{$_}; push @CoreMemNodes,[$hr->{'cores'},$hr->{'mem'},$_]; }; my @sorted = sort {$b->[0] <=> $a->[0] || $b->[1] <=> $a->[1] || $a->[2] cmp $b->[2] } @CoreMemNodes; print "@$_\n" for @sorted;
|
|---|