NAME

perl - Practical Extraction and Report Language


SYNOPSIS

perl-sTtuUWX ]
-hv ] [ -V[:configvar] ]
-cw ] [ -d[t][:debugger] ] [ -D[number/list] ]
-pna ] [ -Fpattern ] [ -l[octal] ] [ -0[octal/hexadecimal] ]
-Idir ] [ -m[-]module ] [ -M[-]'module...' ] [ -f ]
-C [number/list]
-P ]
-S ]
-x[dir] ]
-i[extension] ]
[ [-e|-E'command' ] [ -- ] [ programfile ] [ argument ]...

もし Perl が初めてなら、 perlintro から始めるのがよいでしょう; これは初心者のための全体的な導入であり、Perl の豊富なドキュメントの残りを 読むのを助ける、いくらかの背景を提供します。

参照しやすいように Perl のマニュアルは、いくつかの節に分割しています。

概観

    perl                Perl の概観(この章)
    perlintro           初心者のための Perl の手引き
    perltoc             Perl 文書の目次

チュートリアル

    perlreftut          Perl リファレンスの短い手引き
    perldsc             Perl データ構造の手引き
    perllol             Perl データ構造: 配列の配列
    perlrequick         Perl 正規表現クイックスタート
    perlretut           Perl 正規表現のチュートリアル
    perlboot            初心者のための Perl OO チュートリアル
    perltoot            Perl OO チュートリアル、第 1 部
    perltooc            Perl OO チュートリアル、第 2 部
    perlbot             Perl OO トリックと例
    perlperf            Perl のパフォーマンスと最適化のテクニック
    perlstyle           Perl スタイルガイド
    perlcheat           Perl チートシート
    perltrap            不注意による Perl のわな
    perldebtut          Perl デバッグチュートリアル
    perlfaq             Perl でよくある質問と答え
      perlfaq1          Perl に関する一般的な質問
      perlfaq2          Perl の入手と学習
      perlfaq3          プログラミングツール
      perlfaq4          データ操作
      perlfaq5          ファイルとフォーマット
      perlfaq6          正規表現
      perlfaq7          Perl 言語に関することがら
      perlfaq8          システムとの相互作用
      perlfaq9          ネットワーク

リファレンスマニュアル

    perlsyn             Perl の文法
    perldata            Perl のデータ構造
    perlop              Perl の演算子と優先順位
    perlsub             Perl のサブルーチン
    perlfunc            Perl の組み込み関数
      perlopentut       Perl の open() のチュートリアル
      perlpacktut       Perl の pack() と unpack() のチュートリアル
    perlpod             Perl plain old documentation
    perlpodspec         Perl plain old documentation 形式定義
    perlrun             Perl の実行とオプション
    perldiag            Perl の診断メッセージ
    perllexwarn         Perl の警告とその制御
    perldebug           Perl のデバッグ
    perlvar             Perl の定義済み変数
    perlre              Perl 正規表現; その他の話題
    perlrebackslash     Perl 正規表現バックスラッシュシーケンス
    perlrecharclass     Perl 正規表現文字クラス
    perlreref           Perl 正規表現クイックリファレンス
    perlref             Perl のリファレンス; その他の話題
    perlform            Perl のフォーマット
    perlobj             Perl のオブジェクト
    perltie             Perl の、単純な変数に隠されたオブジェクト
      perldbmfilter     Perl DBM フィルタ
    perlipc             Perl のプロセス間通信
    perlfork            Perl の fork() 情報
    perlnumber          Perl の数値の意味論
    perlthrtut          Perl のスレッドのチュートリアル
      perlothrtut       昔の Perl のスレッドのチュートリアル
    perlport            Perl の移植性ガイド
    perllocale          Perl のロケール対応
    perluniintro        Perl の Unicode の紹介
    perlunicode         Perl の Unicode 対応
    perlunifaq          Perl の Unicode FAQ
    perlunitut          Perl の Unicode のチュートリアル
    perlebcdic          EBCDIC プラットフォームで Perl を実行する際の検討材料
    perlsec             Perl のセキュリティ
    perlmod             Perl モジュール: どのように動作するか
    perlmodlib          Perl モジュール: 書き方と使い方
    perlmodstyle        Perl モジュール: 上品なモジュールの書き方
    perlmodinstall      Perl モジュール: CPAN からのインストールの仕方
    perlnewmod          Perl モジュール: 新しいモジュールの配布の準備
    perlpragma          Perl モジュール: ユーザープラグマを書く
    perlutil            Perl 配布に含まれるユーティリティ
    perlcompile         Perl コンパイラ機能の紹介
    perlfilter          Perl ソースフィルタ
    perlglossary        Perl 用語集

内部と C 言語インターフェース

    perlembed           C や C++ のアプリケーションに perl を組み込む方法
    perldebguts         Perl デバッグの内部と小技
    perlxstut           Perl XS のチュートリアル
    perlxs              Perl XS アプリケーションプログラミングインターフェース
    perlclib            標準 C ライブラリ関数の内部置換
    perlguts            エクステンションのための Perl の内部関数
    perlcall            C からの Perl 呼び出し仕様
    perlmroapi          Perl メソッド解決プラグインインターフェース
    perlreapi           Perl 正規表現プラグインインターフェース
    perlreguts          Perl 正規表現エンジンの内部
    perlapi             Perl API 一覧 (自動生成)
    perlintern          Perl 内部関数 (自動生成)
    perliol             I/O 層の Perl での実装のための C API
    perlapio            Perl 内部l I/O 抽象インターフェース
    perlhack            Perl hackers guide
    perlrepository      Perl source repository

その他

    perlbook            Perl の書籍情報
    perlcommunity       Perl のコミュニティ情報
    perltodo            Perl の「することリスト」
    perldoc             Pod 形式の Perl ドキュメントを見る
    perlhist            Perl の歴史の記録
    perldelta           Perl の前回のバージョンからの変更点
    perl5100delta       Perl の変更点: バージョン 5.10.0
    perl595delta        Perl の変更点: バージョン 5.9.5
    perl594delta        Perl の変更点: バージョン 5.9.4
    perl593delta        Perl の変更点: バージョン 5.9.3
    perl592delta        Perl の変更点: バージョン 5.9.2
    perl591delta        Perl の変更点: バージョン 5.9.1
    perl590delta        Perl の変更点: バージョン 5.9.0
    perl588delta        Perl の変更点: バージョン 5.8.8
    perl589delta        Perl の変更点: バージョン 5.8.9
    perl587delta        Perl の変更点: バージョン 5.8.7
    perl586delta        Perl の変更点: バージョン 5.8.6
    perl585delta        Perl の変更点: バージョン 5.8.5
    perl584delta        Perl の変更点: バージョン 5.8.4
    perl583delta        Perl の変更点: バージョン 5.8.3
    perl582delta        Perl の変更点: バージョン 5.8.2
    perl581delta        Perl の変更点: バージョン 5.8.1
    perl58delta         Perl の変更点: バージョン 5.8.0
    perl573delta        Perl の変更点: バージョン 5.7.3
    perl572delta        Perl の変更点: バージョン 5.7.2
    perl571delta        Perl の変更点: バージョン 5.7.1
    perl570delta        Perl の変更点: バージョン 5.7.0
    perl561delta        Perl の変更点: バージョン 5.6.1
    perl56delta         Perl の変更点: バージョン 5.6
    perl5005delta       Perl の変更点: バージョン 5.005
    perl5004delta       Perl の変更点: バージョン 5.004
    perlartistic        Perl Artistic License
    perlgpl             GNU General Public License

言語特有

    perlcn              Perl 情報: 簡体中国語 (EUC-CN)
    perljp              Perl 情報: 日本語 (EUC-JP)
    perlko              Perl 情報: 韓国語 (EUC-KR)
    perltw              Perl 情報: 繁体中国語 (Big5)

プラットフォーム特有

    perlaix             Perl 情報: AIX
    perlamiga           Perl 情報: AmigaOS
    perlapollo          Perl 情報: Apollo DomainOS
    perlbeos            Perl 情報: BeOS
    perlbs2000          Perl 情報: POSIX-BC BS2000
    perlce              Perl 情報: WinCE
    perlcygwin          Perl 情報: Cygwin
    perldgux            Perl 情報: DG/UX
    perldos             Perl 情報: DOS
    perlepoc            Perl 情報: EPOC
    perlfreebsd         Perl 情報: FreeBSD
    perlhaiku           Perl 情報: Haiku
    perlhpux            Perl 情報: HP-UX
    perlhurd            Perl 情報: Hurd
    perlirix            Perl 情報: Irix
    perllinux           Perl 情報: Linux
    perlmachten         Perl 情報: Power MachTen
    perlmacos           Perl 情報: Mac OS (Classic)
    perlmacosx          Perl 情報: Mac OS X
    perlmint            Perl 情報: MiNT
    perlmpeix           Perl 情報: MPE/iX
    perlnetware         Perl 情報: NetWare
    perlopenbsd         Perl 情報: OpenBSD
    perlos2             Perl 情報: OS/2
    perlos390           Perl 情報: OS/390
    perlos400           Perl 情報: OS/400
    perlplan9           Perl 情報: Plan 9
    perlqnx             Perl 情報: QNX
    perlriscos          Perl 情報: RISC OS
    perlsolaris         Perl 情報: Solaris
    perlsymbian         Perl 情報: Symbian
    perltru64           Perl 情報: Tru64
    perluts             Perl 情報: UTS
    perlvmesa           Perl 情報: VM/ESA
    perlvms             Perl 情報: VMS
    perlvos             Perl 情報: Stratus VOS
    perlwin32           Perl 情報: Windows

デフォルトでは、上述した man ページは /usr/local/man/ ディレクトリに インストールされます。

Perl モジュールのための豊富な追加のドキュメントが利用可能です。 perl のデフォルト設定では追加のドキュメントは /usr/local/lib/perl5/man ディレクトリ (あるいは Perl ライブラリ ディレクトリの man サブディレクトリ)にあります。 この追加ドキュメントは Perl の標準配布に含まれているものもありますが、 サードパーティモジュールのドキュメントもここにあります。

適切なディレクトリを適切なスタートアップファイルか MANPATH 環境変数に 追加することで、Perl のドキュメントを man(1) プログラムで見られるように することができます。 どこに man ページがインストールされる設定かを見るには、以下のように してください:

    perl -V:man.dir

/usr/local/man/man1/usr/local/man/man3 のように、ディレクトリに 途中まで共通の部分がある場合は、共通の部分 (/usr/local/man) だけを man(1) 設定ファイルか MANPATH 環境変数に設定するだけですみます。 共通の部分がない場合は、両方を追加する必要があります。

もしこれが何らかの理由で動作しない場合、モジュール情報を見るための perldoc スクリプトも使えます。 あるいは、man プログラムの代替を探す手もあります。

プログラムの実行時に何か変なことが起こって、どこを参照したら よいかわからない場合には、取り敢えず -w スイッチを試してみてください。 これで、問題か所を特定できる場合も、多々あります。


DESCRIPTION

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

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

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

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

1993 年から(perlhist を参照してください)、Perl バージョン 5 は、 以下のようなことを追加するためにほとんど全て書き直しています:

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


AVAILABILITY

Perl は事実上全ての Unix 風プラットフォームを含む、ほとんどの OS で 利用可能です。 一覧については Supported Platforms in perlport を参照してください。


ENVIRONMENT

perlrun を参照してください。


AUTHOR

Larry Wall <larry@wall.org>; 多くの方の助力を得つつ。

もしあなたの Perl に関する成功物語と推薦状が、アプリケーションに Perl を 使うことを推奨したいと願っている他の人々の助けになると考えたなら、 あるいは単に Larry と Perl 開発者に感謝の意を伝えたいなら、 perl-thanks@perl.org に送ってください。


FILES

 "@INC"                 perl ライブラリの位置


SEE ALSO

 a2p    awk から perl へのトランスレータ
 s2p    sed から perl へのトランスレータ
 http://www.perl.org/       the Perl homepage
 http://www.perl.com/       Perl articles (O'Reilly)
 http://www.cpan.org/       the Comprehensive Perl Archive
 http://www.pm.org/         the Perl Mongers


DIAGNOSTICS

use warnings プラグマ (および -w スイッチ)は、 幾分わかりやすい診断メッセージを出します。

すべての Perl の診断メッセージについては、perldiag を 参照してください。 use diagnostics プラグマは、Perl の通常の簡潔な警告とエラーを自動的に より長い形式に変更します。

コンパイル時のエラーでは、エラーの起こった行番号に、次に 調べられるはずだったトークンかトークンの型を示します。 (スクリプトが -e スイッチで Perl に渡される場合には、-e スイッチ 1 つが 1 行とカウントされます。)

setuid スクリプトでは、制限事項が増えるため、"Insecure dependency" と いったエラーメッセージが表示されることがあります。 perlsec を参照してください。

絶対に -w スイッチを使った方が良いっていうのは、もう書きましたっけ?


BUGS

-w スイッチが必須になっていません。

Perl は型のキャスト、atof()、sprintf() による浮動小数点出力のような 様々な操作のマシンごとの定義に依存します。

使用している標準入出力ライブラリが、read と write の間に seek や eof が必要なものであれば、Perl でも同様となります。 (ただし、sysread() や syswrite() には適用されません。)

組み込みのデータ型には (メモリサイズからくるものを除いて) 恣意的な サイズの制限はありませんが、それでもいくつかの恣意的制限は存在します: どの変数名も 251 文字より長くてはなりません。 診断で表示される行番号は内部的に short 整数で保管しているので、その 最大値は 65535 に制限されます(より大きな数値は普通回り込みの影響を受けます)。

バグレポートは perlbug@perl.org に送ってください (perl ソースツリーにある myconfig プログラムか perl -V で出力される 完全な設定情報を含めることを忘れないでください)。 もし perl のコンパイルに成功しているなら、utils/ サブディレクトリにある perlbug が、バグレポートをメールする助けとして使えます。

Perl は本当は「病的折衷主義ガラクタ出力機」(Pathologically Eclectic Rubbish Lister) を意味していますが、私がそういった 事をばらしてはいけません。


NOTES

Perl のモットーは「やり方は 1 通りではない。」ということです。 このマニュアルを、後いくつに分割できるかは、宿題とします。

プログラマの 3 つの美徳は、無精、短気、傲慢です。 理由は、ラクダ本を参照してください。