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


in reply to Sorting HoH on 2nd level key?

Your priority values are hashes. So how do you want to compare {'IS-ABC' => '3'} with {'IS-XYZ' => '3'}? Do you compare IS-ABC with IS-XYZ alphabetically, and what if they are equal?

From your desired output here's something that I think will work:

sub sortBySite { my ($site_a) = keys %{$tmp{$a}{'priority'}}; my ($site_b) = keys %{$tmp{$b}{'priority'}}; return $site_a cmp $site_b; }

Also, does your data really need to be stored as a HoH? Would this simpler structure work for you?

'hostX1-1-l.example.com' => { priority => 'IS-ABC', priority_level => 3, os => 'linux', pager => 'man-duty', }