perl - Practical Extraction and Report Language
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 用語集
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 スイッチを試してみてください。 これで、問題か所を特定できる場合も、多々あります。
Perl は、テキストファイルを読み取り、そこから情報を引き出し、 その情報を元に様々な報告を行なうように設計された言語です。 また、多くのシステムマネジメントの作業を行なうのに 適した言語でもあります。 この言語は、綺麗さ (小規模、エレガント、最少) ではなく、 実用性 (使い易さ、効率、完全性) を目指しています。
Perl は、(少なくとも作者の意見では) C, sed, awk, sh の良い部分を 組み合わせているので、これらの言語に馴染みのある方には、それほど 難しいものではないでしょう。 (言語歴史学者はまた、csh, Pascal あるいは BASIC-PLUS の痕跡にも 気付くかもしれません。) 式の構文は、C の式の構文に対応したものとなっています。 多くの UNIX のユーティリティとは違って、Perl はデータの大きさに 恣意的な制限を設けません。 つまり Perl では、メモリさえ十分にあれば、ファイルを丸ごと 1 つの 文字列に入れてしまうこともできます。 再帰の深さにも制限がありません。 また、ハッシュ(「連想配列」と呼ばれることもあります)が使用するテーブルは、 パフォーマンスを損なわないように、必要に応じて、自動的に大きくなります。 Perl では、大量のデータをすばやく走査できるように、工夫を凝らした パターンマッチの技術が使えます。 テキストの走査のために設計されてはいますが、Perl では、 バイナリデータを扱うこともできますし、 dbm ファイルをハッシュのようにして扱うこともできるようになっています。 データフロートレース機構を使って、単純ミスによるセキュリティホールを 塞ぐようにしているため、多くの場合、setuid Perl スクリプトは C の プログラムよりも安全です。
普通は sed や awk や sh で書くような問題でも、少し荷が 重すぎるようなとき、多少でも実行速度を速くしなければならないときや、 C で書く程でもないときには、Perl が最適でしょう。 また、sed や awk のスクリプトを Perl のスクリプトに変換する トランスレータも用意されています。
ちょっと待ってください、まだあります…
1993 年から(perlhist を参照してください)、Perl バージョン 5 は、 以下のようなことを追加するためにほとんど全て書き直しています:
無数のモジュールによるモジュール性と再利用性
perlmod, perlmodlib, perlmodinstall に記述しています。
組み込み容易性と拡張性
perlembed, perlxstut, perlxs, perlcall, perlguts, xsubpp に記述しています。
(多重同期 DBM 実装を含む) 自分自身の役割を行うマジカル変数
perltie と AnyDBM_File に記述しています。
サブルーチン定義がオーバライド、オートロード、プロトタイプ宣言可能に
perlsub に記述しています。
任意の多重データ構造と無名関数
perlreftut, perlref, perldsc, perllol に記述しています。
オブジェクト指向プログラミング
軽量プロセス(スレッド)対応
perlthrtut と threads に記述しています。
Unicode、国際化、地域化対応
perluniintro, perllocale, Locale::Maketext に記述しています。
レキシカルスコープ
perlsub に記述しています。
正規表現の拡張
統合エディタ対応付きの強化デバッガと対話的 Perl 環境
perldebtut, perldebug, perldebguts に記述しています。
POSIX 1003.1 準拠ライブラリ
POSIX に記述しています。
さあ、誇大広告にはこれくらいにしましょう。
Perl は事実上全ての Unix 風プラットフォームを含む、ほとんどの OS で 利用可能です。 一覧については Supported Platforms in perlport を参照してください。
perlrun を参照してください。
Larry Wall <larry@wall.org>; 多くの方の助力を得つつ。
もしあなたの Perl に関する成功物語と推薦状が、アプリケーションに Perl を 使うことを推奨したいと願っている他の人々の助けになると考えたなら、 あるいは単に Larry と Perl 開発者に感謝の意を伝えたいなら、 perl-thanks@perl.org に送ってください。
"@INC" perl ライブラリの位置
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
use warnings
プラグマ (および -w スイッチ)は、
幾分わかりやすい診断メッセージを出します。
すべての Perl の診断メッセージについては、perldiag を
参照してください。
use diagnostics
プラグマは、Perl の通常の簡潔な警告とエラーを自動的に
より長い形式に変更します。
コンパイル時のエラーでは、エラーの起こった行番号に、次に 調べられるはずだったトークンかトークンの型を示します。 (スクリプトが -e スイッチで Perl に渡される場合には、-e スイッチ 1 つが 1 行とカウントされます。)
setuid スクリプトでは、制限事項が増えるため、"Insecure dependency" と いったエラーメッセージが表示されることがあります。 perlsec を参照してください。
絶対に -w スイッチを使った方が良いっていうのは、もう書きましたっけ?
-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) を意味していますが、私がそういった 事をばらしてはいけません。
Perl のモットーは「やり方は 1 通りではない。」ということです。 このマニュアルを、後いくつに分割できるかは、宿題とします。
プログラマの 3 つの美徳は、無精、短気、傲慢です。 理由は、ラクダ本を参照してください。