[pod] [xml]

NAME

perlmodlib - 新たな Perl モジュールを作ったり、既にあるものを検索する

THE PERL MODULE LIBRARY

Perlの配布パッケージには、たくさんのモジュールが含まれています。 そのようなモジュールは後で説明しますが、 そのファイル名の終端は全て .pm になっています。 コンパイルされたライブラリファイル(普通は .so で終わっています) や autoload されるべきモジュールの小さい断片 (.al で終わっています) を 発見するかもしれません; これらはインストール処理によって自動的に 生成されます。 同様に、.pl や .ph で終わっているものを ライブラリディレクトリで発見するかもしれません。 これらのファイルは古いライブラリで、これを使う古いプログラムは今でも 実行可能です。 .pl ファイルは、最終的には標準モジュールへと変換され、 h2ph によって作成された .ph ファイルは h2xs によって 作成された拡張モジュールのようになるでしょう(幾つかの .ph の値は既に POSIX, Errno, Fcntl モジュールを通じて入手可能です)。 配布パッケージにあるファイル pl2pm はあなたの変換作業を助けてくれるかも しれませんが、これは機械的に処理するもので完全なものには程遠いものです。

Pragmatic Modules

(プラグマモジュール)

これはあなたのプログラムのコンパイルに影響を及ぼすコンパイラ指示子 (プラグマタ)のように動作します。 このため、通常は use もしくは no と一緒に使われたときにだけ働きます。 これらのほとんどはレキシカルなスコープなので、内側のブロックでは 以下のようにして取り消すことができます:

    no integer;
    no strict 'refs';
    no warnings;

これは BLOCK の終端まで有効です。

いくつかのプラグマはレキシカルスコープを持ちます -- 典型的には $^H ヒント変数に影響を与えます。 その他のものは、use varsuse subs のように、代わりに現在の パッケージに影響を与えます; これによって、単に一つのブロックではなく 特定の ファイル の中に変数やサブルーチンを事前宣言できます。 このような宣言は、ファイル全体に宣言したい場合に効果的です。 これは no varsno subs で撤回できません。

以下のプラグマが定義されています(そして独自のドキュメントがあります)。

Standard Modules

(標準モジュール)

標準でバンドルされている名前空間の汚染を考慮する良く定義されたマナーに 基づいた振る舞いを期待されるモジュールです。 これは Exporter モジュールを使っているからです。 詳細についてはそれぞれのドキュメントを参照してください。

以下にリストされたモジュールが全てはインストールされていない可能性が あります。 例えば、GDBM_File モジュールは gdbm ライブラリがなければ インストールされません。

あなたの使っているシステムでインストールされているドキュメントの ないものや標準リリースにはないものを含めた すべての モジュールを 見つけ出すためには、以下のコマンドを使ってください (デフォルトの win32 のシェルでは、シングルクォートの代わりに ダブルクォートを使うべきです)。

    % perl -MFile::Find=find -MFile::Spec::Functions -Tlwe \
      'find { wanted => sub { print canonpath $_ if /\.pm\z/ },
      no_chdir => 1 }, @INC'

(ここでの -T は @INC に入っている一覧から '.' を取り除くためです。) これらはすべて独自のドキュメントをインストールして、システムの man(1) こまんどでアクセス可能なはずです。 もし find プログラムがないなら、代わりに perl で実行できる Perl コードを 生成する Perl の find2perl プログラムが使えます。 もし man プログラムはあるけれどもモジュールが見つからない場合は、 manpath を修正する必要があります。 詳細については perl を参照してください。 もしシステムの man コマンドがないなら、perldoc プログラムを 試してみてください。

さらに、 perldoc perllocal というコマンドで(不完全かもしれませんが) 追加でシステムにインストールされたモジュールの一覧が表示されます。 (perllocal.pod ファイルは標準の MakeMaker によるインストール処理で 更新されます。)

Extension Modules

(拡張モジュール)

拡張モジュールは C(もしくは Perl と C の混合)で書かれます。 これらは普通は必要になったときに動的に Perl へロードされますが、 静的にリンクされる場合もあります。 サポートされている拡張モジュールには Socket, Fcntl, POSIX があります。

多くの良く知られた C 拡張モジュールは、そのサイズであるとか 揮発性、あるいは単純に十分なテストをする時間がなかったとか Perl がベータテストされているプラットフォームでコンフィグレーションする 時間が無かったためにバンドルされていません(少なくとも完全には)。 こういったモジュールは、CPAN (後述します) や、 Alta Vista や Google といったウェブ検索エンジンを使って探すことを お勧めします。

CPAN

CPAN は Perl に関する統合的な保管ネットワークを意味しています; これは、世界中に複製されている Perl に関する事柄のグローバルな コレクションで、ドキュメント、スタイルガイド、罠と技、非 Unix システムへの 移殖とそのための一時的なバイナリ配布などを含みます。 CPAN の検索エンジンは http://www.cpan.org/ にあります。

もっとも重要なことは、CPAN には配布パッケージには バンドルされていないたくさんのモジュールも含まれています; その中にはビルドに C コンパイラが必要なものもあります。 以下に挙げるのは、モジュールの大まかな分類です。

登録されている CPAN サイトには以下に挙げるものがあります。 ソート順はフィールド毎にアルファベット順であることに注意してください:

 Continent
   |
   |-->Country
         |
         |-->[state/province]
                   |
                   |-->ftp
                   |
                   |-->[http]

従って、北アメリカサーバはヨーロッパと南アメリカのサイトの間に リストされてしまっています。

この中から最も近いものを選ぶのが良いでしょう。

Africa

(アフリカ)

Asia

(アジア)

Central America

(中央アメリカ)

Europe

(ヨーロッパ)

North America

(北アメリカ)

Oceania

(オセアニア)

South America

(南アメリカ)

RSYNC Mirrors

(RSYNC ミラー)

                      www.linux.org.ar::cpan
                      theoryx5.uwinnipeg.ca::CPAN
                      ftp.shellhung.org::CPAN
                      rsync.nic.funet.fi::CPAN
                      ftp.u-paris10.fr::CPAN
                      mir1.ovh.net::CPAN
                      rsync://ftp.crihan.fr::CPAN
                      ftp.gwdg.de::FTP/languages/perl/CPAN/
                      ftp.leo.org::CPAN
                      ftp.cbn.net.id::CPAN
                      rsync://ftp.heanet.ie/mirrors/ftp.perl.org/pub/CPAN
                      ftp.iglu.org.il::CPAN
                      gusp.dyndns.org::cpan
                      ftp.kddlabs.co.jp::cpan
                      ftp.ayamura.org::pub/CPAN/
                      mirror.leafbug.org::CPAN
                      rsync.en.com.sg::CPAN
                      mirror.averse.net::cpan
                      rsync.oss.eznetsols.org
                      ftp.kr.FreeBSD.org::CPAN
                      ftp.solnet.ch::CPAN
                      cpan.cdpa.nsysu.edu.tw::CPAN
                      cpan.teleglobe.net::CPAN
                      rsync://rsync.mirror.anlx.net::CPAN
                      ftp.sedl.org::cpan
                      ibiblio.org::CPAN
                      cpan-du.viaverio.com::CPAN
                      aniani.ifa.hawaii.edu::CPAN
                      archive.progeny.com::CPAN
                      rsync://slugsite.louisville.edu::CPAN
                      mirror.aphix.com::CPAN
                      cpan.teleglobe.net::CPAN
                      ftp.lug.udel.edu::cpan
                      mirrors.kernel.org::mirrors/CPAN
                      mirrors.phenominet.com::CPAN
                      cpan.pair.com::CPAN
                      cpan-sj.viaverio.com::CPAN
                      mirror.csit.fsu.edu::CPAN
                      csociety-ftp.ecn.purdue.edu::CPAN

最新の CPAN サイトリストは、 http://www.cpan.org/SITESftp://www.cpan.org/SITES を 参照してください。

Modules: Creation, Use, and Abuse

(モジュール: 作成、使用、濫用)

(以下のセクションは、Tim Bunce のモジュールファイルからそのまま 借りてきたものです。 このモジュールファイルは直近の CPAN サイトで入手可能です。)

Perl はパッケージを使ったクラスを実装していますが、パッケージの存在が クラスの存在を意味するということではありません。 パッケージとは単なる名前空間です。 クラスはメソッドとして使うことのできるサブルーチンを持っている パッケージです。 メソッドとは、その最初の引数としてパッケージの名前("static" メソッドの場合)か 何かのリファレンス("virtual"メソッドの場合)をとるサブルーチンです。

モジュールとは、(規則では) ファイルと同じ(ただし.pmはない)名前の クラスと、それに加えて export されたシンボルをフェッチするために 呼び出すことができるようなクラスにあるimport メソッドを提供するものです。 このモジュールは C や C++ オブジェクトから動的にロードされる メソッドを実装することもできますが、モジュールのユーザーに対して 総合的には透過であるべきです。 同様に、モジュールはオンデマンドでサブルーチン定義を slurp するような AUTOLOAD 関数をセットアップすることもできますが、これもまた透過であるべきです。 .pm ファイルだけが存在することを要求されます。 AUTOLOAD 機構に関する詳細は perlsub, perltoot, AutoLoader を 参照してください。

Guidelines for Module Creation

(モジュール作成のガイドライン)

Guidelines for Converting Perl 4 Library Scripts into Modules

(Perl4 のライブラリスクリプトをモジュールに変換するガイドライン)

Guidelines for Reusing Application Code

(アプリケーションプログラムの再利用のためのガイドライン)

NOTE

(注意)

C++、Ada、Modula-17 といった他の言語のようにモジュールの一部分を private にするとか、public にするといったことを Perl は 強制するようなことはありません。 Perl はプライバシーを強制することに夢中になることはしません。 あなたがリビングルームの外に留まっているのはあなたが 招待されていないからで、 ショットガンを持っているからではないからです。

モジュールとそのユーザーは不文律の一部として、契約を交わしています。 そして、その一部は「書かれて」います。 不文律契約の一部としては、モジュールが、委譲されていない名前空間を 汚染しないことです。 モジュールのために書かれた契約(ドキュメント)は、異なる規約を 作ることが可能です。 しかしその後、あなたが世界を再定義 (redefining the world) する use RedefineTheWorld を使ったときにそれによって起こる結果を 享受することを知ることになるでしょう。