[Perl][Programming][NLP]タイトル文字列だけを使ってシリーズもの(本やDVDなど)を巻数順にソートする方法のメモ。なんの新規性もない昔から使われている雑なロジックだけど、だいたいはこれで用をなす。ソートに使う巻数(または年月日)表示の文字は0から9までの10種類。単純にソートすると、数値ではなく文字列としてのソートなので、2桁以上の数字ではおかしくなる。下記のように10が4より前になったり。数字を認識し桁を揃えたものに置き換えたのち全体を文字列として比較するという方針で解決。"$_->{str4sort}\n";}先ほどのテストデータを処理してみると、想定通りにソートできている。実際に内部でソートの比較で使われている文字列はこうなる。完全ではないにしろ、大体のケースはこれでなんとかなる。桁があふれなければ、「1.10.2」みたいなバージョン表記も大丈夫。下記の例のようにシリーズものでありながら巻数表記が統一できてないものはどうしようもない。ありがちな巻数表記パターンを羅列すればなんとかなるだろうが面倒なのでスルー。ブログ運営者宛のメッセージをこっそり送信できます(非公開)。