my @ss =
map sort_inner( [ keys %{ $_->[ 0 ] } ] ),
sort { $a->[ 1 ] <=> $b->[ 1 ] }
map [ $HoHoA{ $_ }, substr( $_, 3 ) ],
keys %HoHoA;
for my $i ( 0..$#ss-1 ) {
my $si = $ss[ $i ];
for my $j ( $i+1..$#ss ) {
my $sj = $ss[ $j ];
for my $ki ( @$si ) {
for my $kj ( @$sj ) {
print "$ki - $kj\n";
}
}
}
}
sub sort_inner {
return [
map $_->[ 0 ],
sort { $a->[ 1 ] <=> $b->[ 1 ] || $a->[ 2 ] <=> $b->[ 2 ] }
map [ $_, /\d+/g ],
@{ $_[ 0 ] }
]
}
####
for my $ki ( @$si ) {
for my $kj ( @$sj ) {
print "$ki - $kj\n";
}
}
####
for my $i ( 0..$#ss-1 ) {
my $si = $ss[ $i ];
for my $j ( $i+1..$#ss ) {
my $sj = $ss[ $j ];
# ...
}
}
####
{ $a->[ 1 ] <=> $b->[ 1 ] || $a->[ 2 ] <=> $b->[ 2 ] }
####
my @ss =
map sort_inner( [ keys %{ $HoHoA{ $_->[ 0 ] } } ] ),
sort { $a->[ 1 ] <=> $b->[ 1 ] }
map [ $_, substr( $_, 3 ) ],
keys %HoHoA;
####
my @tmp =
map $_->[ 0 ],
sort { $a->[ 1 ] <=> $b->[ 1 ] }
map [ $_, substr( $_, 3 ) ],
keys %HoHoA;
####
my @ss = map sort_inner( [ keys %{ $HoHoA{ $_ } } ] ), @tmp;
####
sort_inner( [ keys %{ $HoHoA{ $k } } ] )