sub keycmp { $a =~ /^(\D*)(\d*)$/; my $a_txt = $1; my $a_num = $2; $b =~ /^(\D*)(\d*)$/; my $b_txt = $1; my $b_num = $2; if ($a_txt eq $b_txt) { return $a_num <=> $b_num } else { return $a_txt cmp $b_txt } } @result = sort keycmp keys %{$hash->{"AAA"}}; print "@result\n";