#!/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;