日本語的にソートする
例えば、「Apple」「Orange」「みかん」「イチゴ」をこの順番で並べたい時、普通にソートしたのでは、「Orange」「みかん」「イチゴ」「Apple」となる。これを、もっと日本語的にソートする。
ついでに処理速度を鑑みて、シュワルツ・ソートしてみました。
#use encoding でやっています。そうでなければ、Jcode->tr を使うといいでしょうね。
use encoding 'utf8'; my @arr = ( 'Apple', 'Orange', 'みかん', 'イチゴ' ); print join( "\n", jsort( @arr ) ); sub jsort { return map { $_->[0] } sort { $a->[1] cmp $b->[1] || $a->[0] cmp $b->[0] } map { my $org = $_; tr/A-Za-za-z0-9ぁ-ん/A-ZA-ZA-Z0-9ァ-ン/; [ $org, $_ ]; } @_; }