表紙ディジタルカメラカメラのはなしコンピュータブロードバンドWEBページ雑学日本語Perl好みのPCを組む
 はじめに 準備 PCの準備 Perl の概要と実行法 Perlプログラム作法 第1課 第2課 第3課 第4課 第5課 第6課 第7課 第8課 第9課 Perl らしいプログラム
日本語Perl

はじめに

Perl は Larry Wall によって1987年に開発されたインタープリタ方式のプログラミング言語である。 ここで紹介するように、きわめて優れた機能を持つプログラミング言語であり、しかも無料で配布されている。

Larry Wall 自身によれば、Perl はテキスト処理言語としてスタートしたといい、その名前は「Practical Extraction and Report Language(実践的(データ)抽出およびレポート作成用言語)」を略したものだそうだが、「Pathologically Eclectic Rubbish Lister (病理学的には選りすぐりのがらくたリスト出力機)」でも良いとしている。

Perl のモットーは、「それをやる方法は1通り以上ある」という点にある。これは言語学者でもある Larry Wall が、人間が普段話している自然言語では、言葉が1通りという事はありえないという現実を、プログラミング言語にも取り入れようとしている考えの現われである。しかし、それ以外にも、他のプログラミング言語の優れたところはすべて取り入れ、面倒さは捨て去り、「簡単にできることは簡単に、難しいことは可能になる」ように設計してあるともいわれている。

Perl はその特徴から、Web ページの作成加工に便利なため、CGI (Common Gateway Interface) の手法として好まれて普及してきた。私もこれまでは、それ以外の用途ではあまり使っていなかった。しかし、今回、自宅の Windows PC を Web サーバーに仕立て上げ、そこに Perl (Active State 社の「Active Perl Virsion 5.8.8 Build 819 for MicroSoft Windows(x86):以下Active Perl Virsion 5.8.8とよぶ」)をインストールして使ってみて驚かされた。

これまで Perl で日本語を扱うためには、Jperl のパッチを当てたり、jcode.pl、kconv.pm などのモジュールを導入しなければ ならなかった。しかし現在の Perl では、何の手も加えずに、単独ですべての機能を日本語に適用できるようになっていることを知って驚いたのである。これはひとえに Perl が Unicode を導入したおかげにほかならない。 この Perl (Active Perl Virsion 5.8.8) で日本語を扱う方法は至極簡単であり、次の2通りがある。

use encoding "cp932";
$/ = "\r\n";

まずもっとも簡単なのは、Perl のプログラムを「シフトJIS」の文字コードで書き、プログラムの先頭に左の2行のような記述を入れて置く方法である。従来の常識では、Perl のプログラムをシフト JIS の文字コードで書くことは文字化けを生じるため「禁忌」とされていたが、左の最初の1行目で Perl は「シフトJIS」コードの全ての日本語を 「Unicode」に変換して読み込んでくれるので、文字化けは生じなくなる。キーワード「cp932」に関しては、『Perl の概要と実行法』の『CP932とは』で解説している。これを「use encoding "shiftjis"」としてもうまくいかない理由も述べている。また、第2行目はキーボードやファイルの改行が Windows 標準の「CR+LF」であることを指定している。

上記の方法では、変数名等に日本語を使用することは出来ない。しかしこれで、日本語の文字化けも起こらず、正規表現の機能も全て使用できるので、ぜひ試してみていただきたい。確認してはいないが、Perl の設計精神からいって、同じ Virsion 5.8.x の Perl であれば、UNIX 版のものでも同様と思われる。ただし、ファイルの読み書きについては、このサイトで解説している方法に準じて行わなければならない。

use utf8;
binmode STDIN,  ":encoding(cp932)";

binmode STDOUT, ":encoding(cp932)";

第2の方法は、Perl のプログラムを「UTF-8」の Unicode 文字で書き、プログラムの先頭に左のような3行の記述を入れて置く方法である。最初の1行は Perl に文字コードとして「UTF-8」を使用することを宣言し、 続く2行はキーボードやディスプレーの入出力を「シフトJIS」の文字コードに変換するよう宣言するものである。

プログラムを「UTF-8」コードで書くといっても、Windowsのメモ帳でもできるので特殊なことではない。これによって、データとして日本語を扱える以上に、プログラ ム中の変数等の「名前」にも日本語が使えるようになる。ただし、Windows自身が取り扱える文字コードは「シフトJIS」なので、Perl とキーボードやディスプレーといった入出力装置間でデータをやり取りするときには、「UTF-8」、「シフトJIS」間のコード変換が必要になる 。それを指定しているのが続く2〜3行目の宣言である。

Perl Virsion 5.8.x で、Jperl のパッチを当てたり、jcode.pl、kconv.pm などのモジュールを導入しなくとも日本語が使えることは、まだ意外と知られていないように思える。Perl を紹介している各ウェブサイトでも、Vrsion 5.8.8 を使っているといいながら、日本語の従来どおりの扱いを紹介している。これは、Perl に関する優れた教科書は海外のものが多く、日本語をどのように扱ったら良いかについて、しっかりした教科書が見当たらないためではないかと思った次第である。そこで、ここでそれを紹介しておこうと思った訳である(自分向けの教科書としてという意味でもある)。もちろん初歩の初歩からの解説としたい。ここで紹介するのは、Perl を完全に日本語化する上記の第2の方法である。

ここでの Perl の解説は、Larry Wall、Tom Chrisiansen、Jon Orwant による「Programming Perl (Third Edition)」に基づいて行っている。ただし、この本はプログラミング言語の教科書というだけでなく、読み物としても楽しいものになっている反面、 Perl のエッセンスを知ろうとするには長編すぎるため、その簡潔版を目指すことにした。また、Perl を Windows で走らせる情報に関しては、Randal L. Shwartz、Elik Olson、 Tom Chrisiansen による「Learning Perl on Win32 Systems」および Perl のオンラインドキュメントを参照した。

また、ここで述べている解説は、プロバイダのサーバ上の Perl で動作させる、CGI を作成するためには、プロバイダの Perl が Version 5.6 以上でないと使えないことに、注意していただきたい。