Schwartzian Transform 複雑な条件でのsortを効率的に実行する方法 Randal Schwartzに由来 http://www.perl.com/CPAN/doc/FMTEYEWTK/sort.html @ret = map { $_->[0] } sort { $a->[1] cmp $b->[1] || $a->[2] <=> $b->[2] } map { [$_, getkeys($_)] } @data; 分解してみると @tmp1 = map { ... } @data; @tmp2 = sort { ... } @tmp1; @ret = map { ... } @tmp2; データと比較条件を無名配列にする [ データ, 条件1, 条件2 ] 条件1と条件2を使って無名配列をソートする 無名配列からデータを取り出す