perl - Perl 5 言語インタプリタ
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] ] [ -S ] [ -x[dir] ] [ -i[extension] ] [ [-e|-E] 'command' ] [ -- ] [ programfile ] [ argument ]...
perldoc プログラムは、Perl と共に配布されている全ての文書を読むための プログラムです。 http://www.perl.org/ では、さらなる文書、チュートリアル、コミュニティ サポポートがオンラインで得られます。
もし Perl が初めてなら、perldoc perlintro
を実行することから 始めるのがよいでしょう; これは初心者のための全体的な導入であり、Perl の豊富なドキュメントの残りを 読むのを助ける、いくらかの背景を提供します。 perldoc でできることを学ぶには、perldoc perldoc
を実行してください。
参照しやすいように 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 形式定義
perlpodstyle Perl POD スタイルガイド
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 のスレッドのチュートリアル
perlport Perl の移植性ガイド
perllocale Perl のロケール対応
perluniintro Perl の Unicode の紹介
perlunicode Perl の Unicode 対応
perlunifaq Perl の Unicode FAQ
perluniprops Perl での Unicode バージョン 6.0.0 特性の一覧
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 ハッカーズガイド
perlsource Perl ソースツリーのガイド
perlinterp Perl インタプリタの概略と、どのように動作するか
perlhacktut 簡単な C コードパッチ作成のウォークスルー
perlhacktips Perl コア C コードをハッキングするときの小技
perlpolicy Perl 開発ポリシー
perlgit Perl リポジトリで git を使う
perlbook Perl の書籍情報
perlcommunity Perl のコミュニティ情報
perltodo Perl の「することリスト」
perldoc Pod 形式の Perl ドキュメントを見る
perlhist Perl の歴史の記録
perldelta Perl の前回のバージョンからの変更点
perl5140delta Perl の変更点: バージョン 5.14.0
perl51311delta Perl の変更点: バージョン 5.13.11
perl51310delta Perl の変更点: バージョン 5.13.10
perl5139delta Perl の変更点: バージョン 5.13.9
perl5138delta Perl の変更点: バージョン 5.13.8
perl5137delta Perl の変更点: バージョン 5.13.7
perl5136delta Perl の変更点: バージョン 5.13.6
perl5135delta Perl の変更点: バージョン 5.13.5
perl5134delta Perl の変更点: バージョン 5.13.4
perl5133delta Perl の変更点: バージョン 5.13.3
perl5132delta Perl の変更点: バージョン 5.13.2
perl5131delta Perl の変更点: バージョン 5.13.1
perl5130delta Perl の変更点: バージョン 5.13.0
perl5123delta Perl の変更点: バージョン 5.12.3
perl5122delta Perl の変更点: バージョン 5.12.2
perl5121delta Perl の変更点: バージョン 5.12.1
perl5120delta Perl の変更点: バージョン 5.12.0
perl5115delta Perl の変更点: バージョン 5.11.5
perl5114delta Perl の変更点: バージョン 5.11.4
perl5113delta Perl の変更点: バージョン 5.11.3
perl5112delta Perl の変更点: バージョン 5.11.2
perl5111delta Perl の変更点: バージョン 5.11.1
perl5110delta Perl の変更点: バージョン 5.11.0
perl5101delta Perl の変更点: バージョン 5.10.1
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
perl589delta Perl の変更点: バージョン 5.8.9
perl588delta Perl の変更点: バージョン 5.8.8
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
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
perlmacos Perl 情報: Mac OS (Classic)
perlmacosx Perl 情報: Mac OS X
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
Unix 風のシステムでは、これらの文書は普通は man プログラムで使える man ページとしても提供されます。
一般的に、プログラムの実行時に何か変なことが起こって、どこを参照したら よいかわからない場合には、まず -w スイッチを試してみてください。 これで、問題か所を特定できる場合も、多々あります。
Perl は公式には "Practical Extraction and Report Language" の略ですが、 そうでない場合もあります。
Perl は元々テキストファイルを読み取り、そこから情報を引き出し、 その情報を元に様々な報告を行なうように設計された言語でした。 そして急速に多くのシステムマネジメントの作業を行なうのに 適した言語になりました。 年を重ねるにつれて、Perl は汎用プログラミング言語に成長しました。 簡単な「一行野郎」からフルスケールのアプリケーション開発まで あらゆることに広く使われています。
この言語は、綺麗さ (小規模、エレガント、最少) ではなく、 実用性 (使い易さ、効率、完全性) を目指しています。
Perl は、(少なくとも作者の意見では) C, sed, awk, sh の良い部分を 組み合わせているので、これらの言語に馴染みのある方には、それほど 難しいものではないでしょう。 (言語歴史学者はまた、csh, Pascal あるいは BASIC-PLUS の痕跡にも 気付くかもしれません。) 式の構文は、C の式の構文に対応したものとなっています。 多くの UNIX のユーティリティとは違って、Perl はデータの大きさに 恣意的な制限を設けません。 つまり Perl では、メモリさえ十分にあれば、ファイルを丸ごと 1 つの 文字列に入れてしまうこともできます。 再帰の深さにも制限がありません。 また、ハッシュ(「連想配列」と呼ばれることもあります)が使用するテーブルは、 パフォーマンスを損なわないように、必要に応じて、自動的に大きくなります。 Perl では、大量のデータをすばやく走査できるように、工夫を凝らした パターンマッチの技術が使えます。 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 ライブラリの位置
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 つの美徳は、無精、短気、傲慢です。 理由は、ラクダ本を参照してください。