%hash = ( a => { 1 => '1', }, b => { 2 => '2', }, c => { 3 => '3', }, d => { 4 => '4', }, ); for my $key ( sort { (keys %{$hash{$a}})[0] <=> (keys %{$hash{$b}})[0] } keys %hash ) { print "$key\n"; }