use strict;
use warnings;
my $hash;
$hash->{"AAA"}->{"KEY1"} = "VALUE1";
$hash->{"AAA"}->{"KEY2"} = "VALUE2";
$hash->{"AAA"}->{"KEY3"} = "VALUE3";
$hash->{"AAA"}->{"KEY9"} = "VALUE3";
$hash->{"AAA"}->{"KEY10"} = "VALUE3";
$hash->{"AAA"}->{"KEY123"} = "VALUE3";
$hash->{"AAA"}->{"KAY1"} = "VALUE1";
$hash->{"AAA"}->{"KAY2"} = "VALUE2";
$hash->{"AAA"}->{"KAY3"} = "VALUE3";
my @result = sort keys %{$hash->{"AAA"}};
print "@result\n";
####
KAY1 KAY2 KAY3 KEY1 KEY10 KEY123 KEY2 KEY3 KEY9
####
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";
####
KAY1 KAY2 KAY3 KEY1 KEY2 KEY3 KEY9 KEY10 KEY123