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