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 文件中还有其他直接出现的情况PERL_DEBUG正常。

可能有什么问题?

谢谢

4

1 回答 1

2

我相信您的问题是,如果您require的程序中有两个语句用于同一个文件,则该文件只会被引入一次。因此,在这种情况下,它只会被引入您的主文件。因此,模块看不到它。

require使用文件名并不是包含代码的复杂机制。它基本上是上面的一步eval。如果你想拥有自己的通用函数库,可以在这两个地方使用,只需将它们制作成一个模块即可。那么你就没有问题了。

于 2012-08-20T08:21:43.900 回答