一般的に言って、Windows系のソフトは、目で結果を確認しながら操作していくことが多いようです。いわゆるWYSIWYG(What You See Is What You Get)「見たとおりの結果になる」と呼ばれる方法です。
この方法には利点も大きいのですが、定型的な操作を連続して行うことがあるため、必ずしも操作しやすいとは言えないことがあります。
たとえば、同一のフォルダ内にある10個あるテキスト・ファイルをまとめて、1つのテキスト・ファイルにする場合、10個のテキスト・ファイルをそれぞれ開いて、すべてを選択してからコピーし、新規に作成するファイルに貼り付けるという作業が必要になります。こうした定型的な操作は、見ながら操作できるといっても、いわゆる「WYSIWYG」である必要はまったくありません。仮に数十もあるファイルを1つにまとめる作業を行うとすると、「WYSIWYG」方式では、気の遠くなるような作業になります。
また、2つのファイルを照合して、一致した場合と不一致の場合にそれぞれ振り分けるような処理にしても、通常の業務の中でしばしば発生しますが、ExcelやAccessなどのアプリケーションでは、簡単にできないようなケースもかなりあります。
さらに、EUC(End User Computing)の進展により、いわゆる情報系のシステムから、一部のレコードを抽出して、CSVファイルやタブ区切りのファイルなどのテキストデータに変換したあと加工する場合が増えてきていますが、ExcelやAccessなどのソフトでは、一部のデータが勝手に変換されてしまったり、特定の条件をつけて、集計するような細かな操作ができないことがあります。
このようにCSVファイルを提供されても、実際には加工できないケースが多いのも実情です。いくら1人1台でパソコンが使える環境になっていたとしても、こうした加工が自由にできないため、「パソコンを使っている」というよりも「パソコンに使われている」というような状況になっています。
こうした定型処理に最適なのが、テキスト処理を中心に威力を発揮するPerlなどのスクリプト言語です。PerlはもともとLarry Wall氏によって作られたUnix系フリーソフトですが、Windowsをはじめ、他のOSにも移植されていて、さまざまな処理に利用できるようになっています。Unixで可能なこともWindowsではさまざまな制約から実現できないことも多いのですが、それを除いてもかなり有用な点があります。
ここでは、Windows系のPerlについて、ソート(並べ替え)やマッチング(照合)、キーブレイクなどのアルゴリズムを中心に、基礎から紹介していきます。特に、Perlの参考書によく紹介されているようなコマンドラインで引数を指定する方式ではなく、CSVファイルを入出力して処理を行う方式を中心に述べていくことにします。
なお、Unix上でのPerlについては、他に数多くのサイトがあるので、ここでは述べません(というより、私が不勉強のため、Unixについては、まったく知らないので、紹介できないのです)。これについては、他のサイトを参照していただきたいと思います。
「Windows版Perlの細道・けもの道」は、もともとUnixで生まれたPerlをWindowsで利用する場合について述べていくということから名づけたものです。王道ではない細道・けもの道のPerlについて紹介していきたいと思います。
perlのインストール方法やperlのスクリプトを作成する上で便利なソフトについて解説しています。
基本的なスクリプトの解説です。基本処理、キーブレイク処理、マッチング(照合)処理、ソート(並べ替え)処理に分けて解説しています。
基本的な入出力スクリプトとif文を使った処理の振り分けについて解説します。
入力データのキーごとに最後のレコードだけを出力したり、合計を出力したりするスクリプトについて解説します。
2つのファイルを照合して、両方にあるファイルやどちらか一方にしかないデータを取り出すスクリプトについて解説します。
CSVファイルのソート(並べ替え)処理を行うスクリプトについて解説します。
パターンマッチ処理や正規表現について解説します。
応用的なスクリプトの解説です。
固定長データからCSVデータに変換したり、CSVデータから固定長データに変換するスクリプトについて解説します。
重複データから重複分を除いたり、重複分だけを取り出したりするスクリプトについて解説します。
ディレクトリにあるファイル名を取り出したり、取り出したファイル名を元に指定したファイルを一本化するスクリプトについて解説します。
入力データを複数のファイルに分割して出力するスクリプトについて解説します。
入力ファイルの文字コードを変換するスクリプトについて解説します。
半角文字(カタカナなど)を全角文字(カタカナなど)に変換したり、その逆に全角文字を半角文字に変換するスクリプトについて解説します。
3次元以上の多次元データを扱うスクリプトについて解説します。
文字列のフォーマットを変更するsprintf関数やWindowsのメッセージを表示するスクリプトについて解説します。
上記で解説したスクリプトやサンプルの入力データです。圧縮(ZIP形式)してありますので、各自のPCに保存後、解凍してください。
「Windows版Perlの細道・けもの道」のRuby版です。