Go to the first, previous, next, last section, table of contents.


組み込み関数の再定義

多くの組み込み関数は、再定義することができますが、これは、ちゃんとした理 由があるときに限って行なうべきです。UNIX 以外のシステムで、実装されてい ない組み込み関数をエミュレートするために使われるのが普通でしょう。

再定義は、モジュールから名前をインポートすることでのみ行なうことができ、 通常の前方宣言は十分ではありません。しかし、subs プラグマ (コンパイラディ レクティブ) を使うと、インポート構文で前方宣言されたものと同様に有効とな り、組み込み関数をその名前で再定義することができます:

use subs 'chdir', 'chroot', 'chmod', 'chown';
chdir $somewhere;
sub chdir { ... }

ライブラリモジュールは一般に、デフォルトの @EXPORT リストの一部として openchdir といった組み込みの名前をエクスポートすべきで はありません。これらの名前は、思わぬところの名前空間に侵入して、思わぬよ うに意味を変えてしまうかも知れないからです。その代わりに、モジュール側で @EXPORT_OK に名前を入れておけば、使用する側では暗黙にではなく、明示的に インポートすることができるようになります。つまり、

use Module 'open';

とは書くことができ、open をインポートして再定義しますが、

use Module;

とした場合には、再定義の無いデフォルトのインポートが行なわれます。


Go to the first, previous, next, last section, table of contents.

検索式: