Go to the first, previous, next, last section, table of contents.


概要

Perl は、テキストファイルを読み取り、そこから情報を引き出し、その 情報を元に様々な報告を行なうように設計された、インタプリタ言語です。また、 多くのシステムマネジメントの作業を行なうのに適した言語でもあります。この 言語は、綺麗さ (小規模、エレガント、最少) ではなく、実用性(使い易さ、効 率、完全性)を目指しています。

この言語は、(少なくとも作者の意見では) C, sed, sh の良い部分を組み合わせ ているので、これらの言語に馴染みのある方には、それほど難しいものではない でしょう。(言語歴史学者はまた、csh, Pascal あるいは BASIC-PLUS の痕跡に も気付くかもしれません。) 式の構文はかなりの部分で、C の式の構文に対応し たものとなっています。多くの UNIX のユーティリティとは違って、Perl はデー タの大きさに恣意的な制限を設けません。つまり Perl では、メモリさえ十分に あれば、ファイルを丸ごと1つの文字列に入れてしまうこともできます。再帰の 深さにも制限がありません。また、連想配列が使用するハッシュテーブルは、パ フォーマンスを損なわないように、必要に応じて、自動的に大きくなります。 Perl では、大量のデータをすばやく走査できるように、工夫を凝らしたパター ンマッチの技術を使っています。テキストの走査のために設計されてはいますが、 Perl では、バイナリデータを扱うこともできますし、(dbm が使えるところでは) dbm ファイルを連想配列のようにして扱うこともできるようになっています。デー タフロートレース機構を使って、単純ミスによるセキュリティホールを塞ぐよう にしているため、多くの場合、setuid Perl スクリプトは C のプログラムより も安全です。

普通は sed や awk や sh で書くような問題でも、少し荷が重すぎるようなとき、 多少でも実行速度を速くしなければならないときや、C で書く程でもないときに は、Perl が最適でしょう。また、sed や awk のスクリプトを Perl のスクリプ トに変換するトランスレータも用意されています。

ちょっと待ってください、まだあります...

Perl version 5 は、ほとんど全て書き直しており、以下のようなことが追加さ れています:

多くの利便性に関する拡張
より読みやすい Perl コードが書けるようになりました(たとえ正規表現の中で も)。以前の暗号的な変数名は覚えやすい識別子で置き換えることができます。 エラーメッセージの情報量が多くなり、オプションの警告によって、初心者が犯 すような過ちを見つけやすくなっています。これは、あまり強要してはいません。 何かおかしな動作を見つけたら、`-w' スイッチを使ってみてください!!! 変な動作が見つからない場合にも `-w' スイッチを使ってください。
単純化された文法
新しい yacc 文法は以前に比べて、半分の大きさになりました。任意文 法規則の多くが正規化されました。予約語の数は 2/3 ほどに切り詰めています。 それにもかかわらず、ほとんどすべての古い Perl のスクリプトを変更なしに使 うことができます。
文面に従ったスコープ
Perl の変数を、C の auto 変数のように、字句スコープで宣言すること ができます。これは効率的であるばかりでなく、「大規模プログラミング」にお けるプライバシーの保護にも役立ちます。
任意の多重データ構造
任意のスカラ変数 (配列の要素でもよい) が、他の変数やサブルーティンへのリ ファレンスを持つことができます。名前のない変数やサブルーティンを作ること が簡単にできます。また、Perl がリファレンスの参照数を管理してくれます。
モジュール性と再利用性
Perl ライブラリは、様々なパッケージで簡単に共有できるモジュールという形 で定義されるようになりました。パッケージは、モジュールが公開しているイン タフェースのすべて、あるいは一部をインポートすることを選択できます。プラ グマ (コンパイラディレクティブのこと) は同じ機構によって定義され、使用さ れます。
オブジェクト指向プログラミング
パッケージはクラスとして機能します。少しばかり新しい文法を導入して、動的 多重継承や仮想メソッドを、明快な方法でサポートしています。ファイルハンド ルをオブジェクトとして扱うことができるようになりました。
組み込み容易性と拡張性
Perl は簡単に C や C++ のアプリケーションに組み込めるようになり、文書化 されているインタフェースを使って、それらのルーティンとの間で、相互に呼び 出しを行なったりすることができます。プリプロセッサ XS は、C や C++ のルーティンを Perl に張り付けるのを手伝ってくれます。動的なモジュー ルのロードがサポートされています。
POSIX 親和性
主な新規モジュールとして POSIX モジュールがあり、適切なところでオブジェ クトクラスを介するようにして、利用可能な POSIX のルーティンや定義をアク セスすることができます。
パッケージコンストラクタとデストラクタ
新しい BEGINEND ブロックは、パッケージがコンパイルされ るときと、プログラムが終了した後に制御を受け取るために使われます。縮退し た形として、`-p'`-n' スイッチを用いたときには awk の BEGINEND のように動作します。
複数の同時 DBM インプリメンテーション
一つのスクリプトから、Perl プログラムが DBM、NDBM、SDBM、GDBM、バークレ イ DB のファイルを、同時にアクセスできるようになりました。実際には、旧 dbmopen インタフェースは、任意の変数をアクセスメソッドを定義して いるオブジェクトクラスに tie する形式に一般化されました。
サブルーティン定義の自動ロード
実際には、AUTOLOAD 機構では、未定義のサブルーティンコールのために、任意 の内容を定義することができるようにしています。自動ロードのためだけではあ りません。
正規表現の拡張
最長一致ではない数量子を指定することができます。後方参照とならないグルー プ化が可能になりました。正規表現の中に空白やコメントを書くことができ、読 みやすさが向上します。すべての古い正規表現にアッパーコンパチな一貫した拡 張性機構が組み込まれました。

さあ、誇大広告にはこれくらいにしましょう。


Go to the first, previous, next, last section, table of contents.

検索式: