>69 のヒントに従って書くと、

for my $x ( keys %val ){
for my $y ( keys %{ $val{ $x }} ){
push @xy_val_list,[$x,$y,$val{ $x }{ $y }];
}
}
@xy_list = sort { $a->[2] <=> $b->[2] } @xy_val_list;
for my $xy_val ( @xy_list ){
print join ",",@$xy_val,"\n";
}
って感じですね。
これも$xと$yをセットにしたもの( [$x,$y,$val] )を要素とした配列をソートすると言う方針は同じですね。
mapにあんまり慣れていないので、こっちのほうがわかりやすいような気がします。