0

私はperlモジュールを持っています:abcUtil.pmサブルーチンチェックを持っています:

package abc::abcUtil
require "common.pl"
sub check {
   ..
   PERL_DEBUG("");
   // PERL_DEBUG is in common.pl
   ..
}

これを実行すると正常に動作しますが、別の perl でこの pm を使用すると:

require "common.pl"
use abc::abcUtil
sub func {
    abc::abcUtil::check();
}

ここで、 を呼び出すとfunc()、次のエラーが発生します。

"Undefined subroutine &abc::abcUtil::PERL_DEBUG .."

PERL_DEBUGこの perl ファイルには、正常に動作している他の直接発生するものがあります。

何が間違っている可能性がありますか?

ありがとう

4

1 に答える 1

2

あなたの問題はrequire、プログラムに同じファイルに対して2つのステートメントがある場合、ファイルが1回しか取り込まれないことだと思います。したがって、この場合はメイン ファイルにのみ取り込まれます。したがって、モジュールはそれを見ることができません。

requireファイル名を使用することは、コードを含めるための洗練されたメカニズムではありません。それは基本的に上のステップですeval。両方の場所で使用できる共通関数の独自のライブラリが必要な場合は、それらをモジュールにします。その後、問題はありません。

于 2012-08-20T08:21:43.900 に答える