#!/usr/bin/env perl use strict; use warnings; my %hoh_test = ( foo1 => { bar => -0.12697, baz => -0.000398154 }, foo2 => { bar => -4.0183e-05, baz => 0 }, foo3 => { bar => 9.966003977e-06, baz => 0.0001939 }, ); my @hoh_data; for my $k0 (keys %hoh_test) { for my $k1 (keys %{$hoh_test{$k0}}) { push @hoh_data, [$k0, $k1, $hoh_test{$k0}{$k1}]; } } my $fmt = "foo: %s, ba: %s, value: %s\n"; printf $fmt, @$_ for sort { $b->[2] <=> $a->[2] } @hoh_data; #### foo: foo3, ba: baz, value: 0.0001939 foo: foo3, ba: bar, value: 9.966003977e-06 foo: foo2, ba: baz, value: 0 foo: foo2, ba: bar, value: -4.0183e-05 foo: foo1, ba: baz, value: -0.000398154 foo: foo1, ba: bar, value: -0.12697 #### ( ["foo1", "bar", -0.12697], ["foo1", "baz", -0.000398154], ["foo2", "baz", 0], ["foo2", "bar", -4.0183e-05], ["foo3", "baz", 0.0001939], ["foo3", "bar", 9.966003977e-06], ) #### ( ["foo1", "baz", -0.000398154], ["foo1", "bar", -0.12697], ["foo3", "baz", 0.0001939], ["foo3", "bar", 9.966003977e-06], ["foo2", "bar", -4.0183e-05], ["foo2", "baz", 0], )