>>66
やばい。ヒントだけもらって自分で解くつもりが答えを見てもよくわかんない...orz
でも、時間をかけて順々に追っかけていくと何とかわかったような気がしてきました

解読結果を書くので間違っていたら指摘してください( 用語とか間違ってるかも )

$fkは$x成分を一時的に入れている。
外側のmapでキーの要素$x,$yの組み合わせに対して
無名配列[$x,$y]を要素としたリストをつくっている。
@xy_list = map{...} keys(%val)

できた@xy_listに対して、以下のsort
(自分の場合やりたいのはcmpでなくて、<=> なので少し変えてます)
sort {
$val{ $aのx成分 }{ $aのy成分 }
<=>
$val{ $bのx成分 }{ $bのy成分 }
}@xy_list

この、値順に並んだ[$x,$y]に対してこれを$khとしてforeachで回している。
一度[$x,$y]の組み合わせのリストをmapで作るのがポイント。

自分一人では絶対に思いつかない方法でした。
ありがとうございました。