9. Perl で正規表現(1)〜入手と実行方法 

   9−1  Perl とは
   9−2  入手とインストール
   9−3  Perlスクリプトの実行方法

前章で紹介したテキスト処理言語の中からPerlを取り上げ、正規表現に関係してよく用いられる処理を紹介します。
以降の内容は、CUIベースのOSに関して基礎的な知識があることを前提として書き進めます。


9−1  Perl とは

Perl を、コンピュータにあまり詳しくない人(本ページの読者層?) 向けに改めて簡潔に説明することはとても難しいのですが……。
(1) その実体は、perl というコマンドです。
Windows版の実体は perl.exe という外部コマンドとして実装されます。
  ◆ Window版 perl のバージョンチェックをしている所 ◆
C:\>perl -v
This is perl, v5.6.1 built for MSWin32-x86-multi-thread
(with 1 registered patch, see perl -V for more detail)

Copyright 1987-2001, Larry Wall
       :
       :

(2) 概念としての Perl は、Perlスクリプトという命令文(プログラム)を受け付け、 解釈し、実行するプログラミング言語です。
元々は UNIX上でシステムのメンテナンスに広く使われていたツールでした。 テキスト処理、ファイル操作からプロセス管理まで適用範囲は非常に幅広く、(新しい言語に押されてきているとはいえ) 現在でもWebページのCGI スクリプトなどに利用されることも多い言語です。
「Perl を使う」 とは事実上、「Perlというプログラミング言語を覚えて、スクリプトを書き、実行する」ことに他なりません。 そういう意味では、プログラミングの経験がない人には、ちょっと敷居が高いかもしれません。


9−2  入手とインストール

Perl の本家は UNIX のツールです。 たいていの UNIX系OSには perl が標準で実装されているはずです。
Windows版(Win32版)に関しては、標準で入ってはいません(入れておいてほしい……)が、ネット上から無料で入手して、 お手持ちのマシンにインストールすることができます。 いろいろな所から出ているのですが、よく使われているのは Active State で提供している ActivePerl です。
Active State のサイトは英語のページなのですが、インストール方法などを日本語で解説してくれているサイトも多いので (だからここでは詳述しません)がんばってインストールしてみてください。
AcrivePerl 自体は、実は日本語のかな漢字に対応してません。 何も工夫をしないと文字列検索・置換などで一部の動作に不具合を起こします。
日本語処理を適切に行うには、Jcode.pm というモジュールまたは jcode.pl というライブラリを組み込んで活用する、 日本語に対応すべく開発された JPerl を使う、といった対処をします。
◆ AcrivePerlのダウンロード: http://www.activestate.com/
◆ JPerlのダウンロード: VECTORから
(JPerl の方は、どうも開発が途中で止まってしまっているようです。Unicode 使用が増えてきて、 日本語処理への負担は増すばかり……)


9−3  Perlスクリプトの実行方法

Perl にスクリプトを与えてテキストを処理するには、複数の方法があります。
(それぞれの処理方法の詳細は次章に譲ります。)

(1) -e 1行スクリプト(と処理ファイル) を指定
  コマンド >perl に -e '1行スクリプト'+処理対象ファイル を与えます。
  ごく簡単で一時的な処理をするような場合に便利です。
>perl -pe 's/2009/H21/g;' efg.txt
   efg.txt の中にある文字列 '2009' を 'H21' に置き換え表示します。

(1)' 処理ファイル名を省略すると、標準入力 からデータを受け取ります。
>dir *.txt | perl -pe 's/2017/H29/g;'
   dir コマンドの出力(ファイル名の一覧)を受け取り、
   ファイル名に '2017' があったら 'H29' に置き換え表示します。

(2) スクリプトファイル(と処理ファイル) を指定
  スクリプトをテキストファイルに記述しておきます。
  同じ処理を何度も使い回すのに便利です。
  これも処理ファイル名を省略すると、標準入力からデータを受け取ります。
  スクリプトファイルは、秀丸エディタ等のテキストエディタで書いて適当な
  名前を付けて保存すればOKです。どんなファイル名でも問題なく動くの
  ですが、慣習的に拡張子 .pl を付けます。
>perl abcd.pl efg.txt

(2)' 処理対象ファイルも常に同一である時は、スクリプトファイルに記述して
  しまえばわざわざコマンドラインで指定する必要もありません。
>perl abcd.pl

(3) >perl なしでスクリプトファイル (と処理ファイル) を指定
  Windowsは拡張子 .pl を見てアプリケーションとの関連付けを
  行います。つまりスクリプトファイルを引数として perl.exe を実行します。
  そういう意味からも、perlスクリプトのファイル名には、拡張子 .pl を付け
  ておくようにしましょう。
>abcd.pl efg.txt