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