EXPORTER(3) USER COMMANDS EXPORTER(3) NAME Exporter - 名前空間操作を制御するモジュール import - 呼びもとの名前空間へのインポート関数 SYNOPSYS package WhatEver; require Exporter; @ISA = (Exporter); @EXPORT = qw(func1, $foo, %tabs); @EXPORT_OK = qw(sin cos); ... use Whatever; use WhatEver 'sin'; DESCRIPTION Exporter モジュールは、行儀のよい Perl モジュールが、自分の ユーザの名前空間に対して、エクスポートするものを制御するため のものです。 上記の WhatEver モジュールでは、関数 func1()、 スカラ $foo、ハッシュ %tabs をエクスポートリストに加えていま す。 誰かが use WhatEver として、WhatEver を使おうとすると き、これらの識別子がユーザ側の名前空間に組み入れられるのです。 つまり、パッケージのユーザは、WhatEver::func1() のように、完 全に修飾しなくても、func1() として関数を使うことができるよう になります。 このように名前空間が汚されることには、気を付けなければなりま せん。 もちろん、WhatEver モジュールのユーザは、use の代わ りに require を使うこともできますし、そうすれば、名前空間の 純潔さも守れます。 特に、言語の定義の中で既に使われている名前を、自動的にエクス ポートされる関数とすることは、避けなければなりません。 そう いった場合には、上記の sin() 関数のように、インポートを選択 できる関数のリストを、@EXPORT ではなく、@EXPORT_OK に設定し ておきます。 perlsub manpage の「組み込み関数の再定義」の節 を参照してください。 @EXPORT にも @EXPORT_OK にも含まれていない名前を、インポート することはできません。 次の 2 種類の書き方は、まったく同じ意味です: use WhatEver; BEGIN { require WhatEver; import Module; } 上記の import() 関数は、言語であらかじめ定義されているもので Perl module manpages Last change: Release 5.0 Patchlevel 00 1 EXPORTER(3) USER COMMANDS EXPORTER(3) はありません。 というよりも、Exporter モジュールのメソッド です。 ライブラリを書くときに、import() メソッドを標準のも のとは違った動作をするように書くことも考えられますが、そうい う陰険なことは、解りにくくするだけです。 Perl module manpages Last change: Release 5.0 Patchlevel 00 2