sub main {
my %val = (a => {A => 1,
           B => 4,
           C => 6},
        b => {A => 3,
           B => 2},
        c => {D => 5,
           E => 7});
foreach my $kh ( sort {$val{$a->[0]}->{$a->[1]} cmp $val{$b->[0]}->{$b->[1]}} map { my $fk = $_; map { [$fk, $_] } keys(%{$val{$_}}); } keys(%val)) {
    printf("%s:%s:%d\n", $kh->[0], $kh->[1], $val{$kh->[0]}->{$kh->[1]});
}

}