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


自動ロード

もし、未定義のサブルーティンを呼び出した場合には、通常はすぐに、「サブルー ティンがない」というコンパイル時の致命的エラーになります。(メソッドとし て使われるサブルーティンも同様で、そのクラスのどの基底クラスにもメソッド が存在しない場合に、エラーとなります。) しかし、AUTOLOAD というサ ブルーティンが、そのパッケージか、もとのサブルーティンが探されるサブルー ティンで定義されていれば、その AUTOLOAD サブルーティンが、もとの サブルーティンを呼び出すときに渡すはずだった引数を使って、呼び出されます。 もとのサブルーティンの完全な名前は、AUTOLOADルーティンとして、同 じパッケージの変数 $AUTOLOAD に記録されています。名前は、普通の引数とし ては渡されません。というのは、あー、その、だから ...

多くの AUTOLOAD ルーティンは、eval を用いて、問題のサブルー ティンの定義をロードし、そのサブルーティンを、トレースなしに AUTOLOAD ルーティンのスタックフレームを消してくれる、特殊な形式の goto を使って呼び出します。(たとえば、標準の`AutoLoader' モ ジュールを参照してください。)しかし、改めて定義を行なわずに、 AUTOLOAD ルーティン自身で、実行されるはずのルーティンをエミュレー トすることも可能です。この形式の良い例としては、未定義のサブルーティン呼 び出しを UNIX プログラムへの呼び出しとして扱う、標準の `Shell' モジュー ルがあげられます。

モジュールが自分自身を、標準の `AutoLoader' モジュールといっしょに 使用するために、自動ロード可能なファイルに分割するのを補助するしくみが用 意されています。拡張モジュールに関するドキュメントを参照してください。


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

検索式: