perlfaq2 - Perl の入手と学習
FAQ のこのセクションでは、Perl のソースや Perl に関するドキュメントが 手に入れられる場所に関する質問や、サポートとトレーニング、関連した 出来事に関する質問に回答しています。
perlの標準リリース(perl 開発チームが保守しているもの)は ソースコード形式でのみ配布されています。 最新版は http://www.cpan.org/src/README.html にあります。
Perl は驚くほど多くのプラットフォームでビルドされ、実行されています。 このソースはほとんどの UNIX システム(perl の本来の環境)を サポートしていますし、VMS, OS/2, Window, QNX, BeOS, MPE/iX, Amiga といった その他のシステムもサポートしています。
幾つかの独占的システム用のバイナリ配布パッケージは http://www.cpan.org/ports/ というディレクトリで見つけられます。 これらは標準配布パッケージには含まれていないので、様々な面で基本的な perl の移植とは異なっています。 あなたはリリースノートを読んで、(標準のものと)なにが違っているのかを 確かめる必要があるでしょう。 そういった違いは、ポジティブなもの(標準リリースの perl では サポートされていないような、プラットフォーム特有の機能に対する 拡張機能など)もあればネガティブなもの(最新の標準 perl にあまり 基づいていないものなど)もあるでしょう。
(brian d foy によって寄贈されました)
ActiveState: Windows, Linux, Mac OS X, Solaris, AIX, HP-UX
http://www.activestate.com/
Sunfreeware.com: Solaris 2.5 から Solaris 10 (SPARC と x86)
http://www.sunfreeware.com/
Strawberry Perl: Windows, Perl 5.8.8 と 5.10.0
http://www.strawberryperl.com
IndigoPerl: Windows
http://indigostar.com/
汝は C コンパイラーを持っていないが故に、汝は破滅し、汝のベンダーは Sun の神に対する贄となるべし。 しかし、それは汝を救うことはない。
あなたがする必要のあることは、まず始めにあなたの使っているシステム向けの gcc
のバイナリを入手することです。 それを手に入れる場所については、あなたの使っているオペレーティング システム向けの Usenet FAQ をあたってください。
ニーズを満たすような Perl (または C コンパイラ!) のビルド済みバイナリを ネットで探す必要があるかもしれませんが:
Windows 用としては、Vanilla Perl ( http://vanillaperl.com/ ) と Strawberry Perl ( http://strawberryperl.com/ ) は、C コンパイラとセットに なっています。 ActivePerl はコンパイル済みですぐ使える Perl です。
Sun のシステム用には、SunFreeware.com が、コンパイラと Perl を含む、 もっとも有名なアプリケーションのバイナリを提供しています。
それは多分、ライブラリをコピーするのを忘れたか、ライブラリパスが 違っているのでしょう。 実際に使用するマシンの上で配布パッケージ全体から ビルドをして、その後に make install
とタイプするようにすべきです。 他のやり方ではほとんど失敗してしまうでしょう。
正しい場所がどこなのかを確かめる単純な方法の一つは、perl が ライブラリを検索する場所がハードコードされている @INC
を出力することです。
% perl -le 'print for @INC'
もしこのコマンドの出力にあなたのシステムはないパスが含まれていたら、 適切なライブラリをそういった場所に移すか、シンボリックリンク、 エイリアス、ショートカットといったものを作成する必要があるでしょう。 @INC
はまた以下のようにしても出力されます:
% perl -V
"How do I keep my own module/library directory?" in perlfaq8 も チェックしておいたほうが良いかもしれません。
ソースの配布パッケージに入っていた INSTALL というファイルを読んでください。 そこには一部のシステムやアーキテクチャーにおいて Configure
スクリプトが 動作しないという問題のほとんどの場合に対処する方法が説明されています。
CPAN は Comprehensive Perl Archive Network (総合 Perl アーカイブ ネットワーク)の略で、これは世界中にある数百のマシン上の数ギガバイトの アーカイブの写しです。 CPAN にはソースコード、ネイティブでない移植、ドキュメント、スクリプト、 多くのサードパーティーによるモジュールやエクステンションが収められていて、 商用データベースから web ウォーキングを制御するキーボード/スクリーン インターフェースと CGI スクリプトでデザインされています。 CPAN のメインウェブサイトは http://www.cpan.org/ にあります; また CPAN Multipler http://www.cpan.org/CPAN.html を使うと DNS 経由で あなたの近くになるミラーサイトを選ぶことができます。 これがどう動いているかは http://www.perl.com/CPAN (最後のスラッシュはありません) を見てください。 また、http://mirror.cpan.org/ は http://www.cpan.org/MIRRORED.BY ミラーディレクトリへのよいインターフェースを提供しています。
CPAN についてのよくある質問や、ミラーになる方法については、 CPAN FAQ http://www.cpan.org/misc/cpan-faq.html を参照してください。
CPAN/path/...
は CPAN サイト上で入手できるファイルに対する名前づけの 規則です。 CPAN は CPAN のミラーリングしている基準ディレクトリを示し、パスの 残りの部分はそのディレクトリからファイルへの相対パスを示します。 たとえば、ftp://ftp.funet.fi/pub/languages/perl/CPAN があなたの 使っている CPAN サイトだとすると、CPAN/misc/japh
というファイルは ftp://ftp.funet.fi/pub/languages/perl/CPAN/misc/japh から ダウンロードできます。
アーカイブには 2006 年時点で 10000 以上のモジュールが既にあると いうことを考えれば、あなたが考えるようなものに近いものがあるという 可能性があります。 CPAN/modules/by-category/
の下のカテゴリーは現在のところ、Perl コアモジュール、開発サポート、オペレーティングシステムインターフェース、 ネットワーク、デバイス、プロセス間通信、データ型ユーティリティ、 データベースインターフェース、ユーザーインターフェース、 他の言語に対するインターフェース、ファイル名、ファイルシステム、 ファイルのロック、国際化とロケール、 ワールドワイドウェブのサポート、サーバーやデーモンのユーティリティ、 アーカイブと圧縮、イメージ操作、メールやニューズ、制御フロー ユーティリティ、ファイルハンドルと I/O、Microsoft Windows モジュール、 その他といったものが含まれます。
カテゴリ別のモジュールのより完全なリストについては http://www.cpan.org/modules/00modlist.long.html か http://search.cpan.org/ を参照してください。
CPAN はフリーなサービスで、O'Reilly Media との関連はありません。
現時点ではありません。 Larry は Perl より先に自分が認証されるだろうと考えています。
Perl に関する完全なドキュメントは Perl の配布パッケージに含まれています。 あなたが Perl をローカルにインストールしたのなら、ドキュメントも同様に インストールされているでしょう。 あなたの使っているシステムが UNIX に似たものであるなら、 man perl
とタイプしてみてください。 $MANPATH
の設定方法を含め、これは他の重要なマニュアルページへ 導くものとなるでしょう。 あなたの使っている UNIX でないのであれば、ドキュメントにアクセスするのには 違った方法になります。 たとえば、HTMLフォーマットのドキュメントだけが使えるかもしれません。 すべての適切な perl のインストールでは完全にアクセス可能な ドキュメントが存在します。
あなたの使っているシステムに適当な man
コマンドがなければ、 perldoc perl
を試してみてください。 これが駄目ならインストールはうまく行っていません。 もしうまく行かなかったのなら、/usr/local/lib/perl5/pod
にある ドキュメントを探してみてください。
今までの方法が全部失敗してしまったなら、HTML と PDF フォーマットの 完全なドキュメントが収められている http://perldoc.perl.org/ を参照してください。
Perl について書かれた多くの良書があります--詳しくは perlfaq2 で後述する章を参照してください。
チュートリアルは Perl のリリースに含まれていて、オブジェクトの チュートリアルは perltoot、 初心者向けのオブジェクトへのアプローチは perlboot、 ファイルのオープンに関するものは perlopentut、 リファレンスの管理は perlreftut、 正規表現に関しては perlretut、 スレッドに関しては perlthrtut、 デバッグに関しては perldebtut、 C と Perl とのリンクは perlxstut にあります。 これを読むことによって得るものは多いでしょう。 以下の URL も有用でしょう:
http://perldoc.perl.org/
http://bookmarks.cpan.org/search.cgi?cat=Training%2FTutorials
Usenet には Perl 言語に関連するいくつかのグループがあります:
comp.lang.perl.announce モデレートされたアナウンス用グループ
comp.lang.perl.misc 流量の多い Perl に関する一般的な議論
comp.lang.perl.moderated モデレートされた議論用グループ
comp.lang.perl.modules Perl モジュールの使用と開発
comp.lang.perl.tk Perl から Tk(と X)を使う
数年前、comp.lang.perl はこれらのグループに分割され、comp.lang.perl は 公式に削除されました。 まだこのグループが存在するサーバーもありますが、 これを使うのは賢明とは言えません。 なぜならここに投稿されたものは公式なグループ名のリストに従っている ニュースサーバーには現れないからです。 より適切な特有のグループがない話題については comp.lang.perl.misc を 使ってください。
perl.org が提供している Perl メイリングリストの Usenet ゲートウェイが nntp://nntp.perl.org に、この web インターフェースが http://nntp.perl.org/group/ にあります。 また、これらのリストは http://groups.google.com の perl.*
階層からも 利用可能です。その他のグループは http://lists.perl.org/ ( http://lists.cpan.org/ としても知られています) に一覧があります。
質問をするのによい場所は PerlMonks サイト http://www.perlmonks.org/ または Perl Beginners メイリングリスト http://lists.perl.org/showlist.cgi?name=beginners です。
上記のどれも自分のために自分のコードを書いてくれることを 想定していないことに注意してください。 特定の問題や一般的なアドバイスを得るのはよいことです。 しかし無料でだれかに自分のためのコードを書いてくれるように頼むのは 感心しません。
最も適切なグループに投稿すべきですが、comp.lang.perl.misc へ クロスポストするのはあなたの自由です。 もしあなたが alt.sources にもクロスポストしたいのならそこの投稿規則に従って、 alt.sources を 含まない Followup-To ヘッダーを設定してください。 詳しくは(投稿に関する) FAQ ( http://www.faqs.org/faqs/alt-sources-intro/ ) を参照してください。
もしあなたが単にソフトウェアを探しているだけならば、まず最初に Google (http://www.google.com ), Google の Usenet 検索 インターフェース ( http://groups.google.com ), CPAN Search (http://search.cpan.org ) をあたってみましょう。 それが、探し物の投稿をするよりも速くて生産的なやり方です。
Perl に関する多くの良い本があります。 perlbook の文書か ( http://books.perl.org ) を参照してください。
The Perl Review ( http://www.theperlreview.com ) はほとんど完全に Perl を 対象としています(しかし時々他の言語に関する記事もあります)。 $foo Magazin という Perl 専門のドイツ語の雑誌も ( http://www.foo-magazin.de ) にあります。
Perl-Zeitung は Perl 初心者のためのドイツ語の雑誌です (http://perl-zeitung.at.tf を参照してください)。
Perl に関する高品質の記事を頻繁に掲載しているものとしては The Perl Review ( http://www.theperlreview.com ), Unix Review ( http://www.unixreview.com/ ), Linux Magazine ( http://www.linuxmagazine.com/ )と、 そして Usenix のメンバーに対する newsletter/magazine である login:( http://www.usenix.org/ ) などがあります。
Randal L. Schwartz の Perl コラムは以下で読むことが出来ます: http://www.stonehenge.com/merlyn/WebTechniques/ , http://www.stonehenge.com/merlyn/UnixReview/ , http://www.stonehenge.com/merlyn/LinuxMag/
最初の(そして長い間唯一の) Perl 専門誌である Perl Jounalには、 チュートリアル、デモ、ケーススタディ、アナウンス、などなどたくさんあります。 TPJには web 開発、データベース、Win32 版 Perl、 グラフィックプログラミング、正規表現、ネットワークに関するコラムがあり、 難解な Perl コンテスト(Obfuscated Perl Contest)と Perl 詩コンテストのスポンサーです。 2002 年 11 月始めに、TPJ は読者が支える月間の e-zine 形式となり、 購読者は PDF ドキュメントとしてダウンロードできます。 2006 年に、TPJ は Dr.Dobbs Journal (online edition) と合併しました。 古い TPJ の記事を読むには、http://www.ddj.com/ または brian d foy によるオンラインの TPJ の内容へのインデックス ( http://www.perlmonks.org/index.pl?node_id=711609 ). を参照してください。
主なモジュール(Tk
, CGI
, libwww-perl
)はそれぞれのメイリングリストが あります。それぞれのモジュールに付属している申し込み情報を 調べてみてください。
Perl に関連するメイリングリストの網羅的なリストは以下で見つかります。
http://lists.perl.org/
Google 検索エンジンは現在ニュースグループのコンテンツも収集し、 検索可能になっています。
http://groups.google.com/group/comp.lang.perl.misc/topics
何か質問がある場合、他の人が同じ質問を c.l.p.m でしていないか確認できます。 これには多少の時間がかかり、全てのコンテンツを調べるのに忍耐が必要ですが、 しばしば探していた答えが見つかります。
実際のところ、perl は既に商用ソフトウェアです。 Perl にはあなたがマネージャーの心を捕らえたり、注意深く説明できるような ライセンスがありますし、Perl は良く定義されたパッケージでリリースされ、 配布されています。 そこには非常に大きなユーザーコミュニティと、広い文化があります。 comp.lang.perl.* ニューズグループと、幾つかのメイリングリストはあなたの 疑問に対してほぼリアルタイムで、無料で回答してくれます。 Perl は伝統的に Larry と、十数人のソフトウェアデザイナーやソフトウェア 開発者、それとたくさんのプログラマーによってサポートされてきました。 すべての作業は無料で、すべての人のためになされました。
しかし、こういった答えはソフトウェアを購入した会社を、そのソフトウェアに 何か不具合があったときに訴えることができることを要求するようなマネージャーを 満足させるものではないでしょう。 あるいは、彼ら(マネージャー)は、非常に重要な取っかかり(hand-holding)や 契約上の義務を必要としているのかもしれません。 そういったものがある、シュリンクラップされた CD に入った perl が幾つかの ところから入手できますが、これが助けになるかもしれません。 例えば、多くの Perl 本が Perl の配布キットを同梱しています。 そう、O'Reily の Perl リソースキット (Unix 版と Windows 版があります)が そうしているように。 フリーな UNIX を配布しているディストリビューターは perl を同梱しています。
(brian d foy によって寄贈されました)
最初に、本当にバグを発見したことを確認してください。 次に、本当にバグを発見したことを確認してください。
perl インタプリタか、(Perl と同梱されている) 標準ライブラリの モジュールのバグを発見した場合、Perl (>= 5.004) に同梱されている perlbug ユーティリティが使えます。 これはインストール情報を収集して、あなたのメッセージと共に 適切な場所に送信します。
あるモジュールがあなたが使っている Perl mに同梱されているものかどうかを 決定するためには、Module::CoreList
モジュールが使えます。 これは、それぞれの Perl のリリース毎に含まれているモジュール( およびそのバージョン)に関する情報を保持しています。
Module::CoreList
がインストールされていない場合は、 http://perlpunks.de/corelist を調べてください。
全ての CPAN モジュールには RT ( http://rt.cpan.org ) に設定された バグトラッカーがあります。 web インターフェースや email を使って RT にバグを送信できます。 バグ報告を email するには、 bug-<distribution-name>@rt.cpan.org に送信してください。 例えば、もし Business::ISBN
のバグを報告したい場合は、 メッセージを bug-Business-ISBN@rt.cpan.org に送信します。
Sourceforge や Google Code のトラッキングシステムのような、 特別な報告システムがあるモジュールもありますので、 モジュールのドキュメントも確認するべきです。
http://www.perl.com/ にある Perl.com は O'Reilly Media の子会社である O'Reilly Network の一部でした。 元の内容のほとんどは O'Reilly Network からのものですが、今では The Perl Foundation によってホスティングされています。
Perl Foundation は Perl 言語の一般的な支援をするための web サイト ( http://www.perl.org/ ) を管理している、Perl 言語の支援団体です。 Perl Foundation は このドメインを、メーリングリストのホスト、 Web サイト、およびその他のサービスを含む Perl コミュニティのための 一般的なサポートサービスを提供するためにドメインを使っています。 Perl の学習、Perl のニュース、Perl での仕事といった特別なトピックのための 多くのサブドメインもあります:
http://www.perl.org/
http://learn.perl.org/
http://jobs.perl.org/
http://lists.perl.org/
Perl Mongers は Perl ユーザーグループに関係するサービスのために pm.org というドメインを使っています。 これにはメーリングリストや web サイトが含まれます。 Perl ユーザーグループへの参加、設立、あるいはサービス要求については Perl Mongers web サイト http://www.pm.org/ を参照して下さい。
CPAN (the Comprehensive Perl Archive Network ) ( http://www.cpan.org/ ) は Perl ソフトウェアの複製された世界的な集積地です。 perlfaq2 の What is CPAN? を参照して下さい。
Copyright (c) 1997-2010 Tom Christiansen, Nathan Torkington, and other authors as noted. All rights reserved.
This documentation is free; you can redistribute it and/or modify it under the same terms as Perl itself.
Irrespective of its distribution, all code examples here are in the public domain. You are permitted and encouraged to use this code and any derivatives thereof in your own programs for fun or for profit as you see fit. A simple comment in the code giving credit to the FAQ would be courteous but is not required.