我有一个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
正常工作。
可能出现什么问题?
由于
答案 0 :(得分:2)
我相信你的问题是,如果你的程序中有同一个文件的两个require
语句,那么该文件只会被引入一次。因此,在这种情况下,它只会被带入您的主文件。因此,模块无法看到它。
require
实际上并不是包含代码的复杂机制。它基本上是eval
以上的一步。如果您想拥有自己的可在两个地方使用的常用功能库,只需将它们组成一个模块即可。那你就没问题了。