未定义的子程序& abc :: abcUtil :: PERL_DEBUG

时间:2012-08-20 06:18:20

标签: perl

我有一个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正常工作。

可能出现什么问题?

由于

1 个答案:

答案 0 :(得分:2)

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

具有文件名的

require实际上并不是包含代码的复杂机制。它基本上是eval以上的一步。如果您想拥有自己的可在两个地方使用的常用功能库,只需将它们组成一个模块即可。那你就没问题了。