#!/usr/bin/perl use strict; use warnings; my %HoH = ( www => { wwe => 1, wte => 2, wee => 0} ); for my $outter (sort keys %HoH) { for my $inner (sort { $HoH{$outter}{$a} <=> $HoH{$outter}{$b} } keys %{$HoH{$outter}}) { print "${outter}::$inner = $HoH{$outter}{$inner}\n"; } } #### $ perl ./x.pl www::wee = 0 www::wwe = 1 www::wte = 2 #### #!/usr/bin/perl use strict; use warnings; my %HoH = ( www => { wwe => 11, wte => 21, wee => 0}, zzz => { zze => 15 }, ); my @keys = sort { $HoH{$a->[0]}{$a->[1]} <=> $HoH{$b->[0]}{$b->[1]} } map { my $outter = $_; map { [ $outter, $_ ] } keys %{$HoH{$outter}}; } keys %HoH; for (@keys) { print( (join '::', @$_), ' = ', $HoH{$_->[0]}{$_->[1]}, "\n"); } #### $ perl ./x.pl www::wee = 0 www::wwe = 11 zzz::zze = 15 www::wte = 21