Perlのsort関数

これまで単純な文字列比較くらいしか使ったことがなかったけど、複数条件でソートできたらいいな〜と調べてみたらあった。さすがPerl
論文の一部にヒットした模様だけど、論旨は無視して欲しいところだけつまみ食い。

◆配列の中の複数の成分で並べ替える。
Naive multi-subkey record sorts / A Fresh Look at Efficient Perl Sorting
下の例は、例えば「ドット付きn進表記のIPアドレスを格納した配列を、各組に分けて順番に比較して、昇順に並べ替える」ような時に使える。

@out = sort {
 my @a = $a =~
   /(\d+)\.(\d+)\.(\d+)\.(\d+)/;
 my @b = $b =~
   /(\d+)\.(\d+)\.(\d+)\.(\d+)/;
 $a[0] <=> $b[0] ||
 $a[1] <=> $b[1] ||
 $a[2] <=> $b[2] ||
 $a[3] <=> $b[3]
 } @in;

条件いくらでも足せるし(たぶん)、判定順番も自在だし、俺sort関数ベンリダナー、と。
sort関数GJ、Perl GJ。