我有一个模块Foo.pm
package Foo;
sub new {
}
sub SomeMethod {
}
1;
然后是一个子类,Foo::Bar
Foo/Bar.pm
package Foo::Bar;
use base Foo;
use Foo;
sub SomeMethod {
}
1;
现在我们需要使用
use base Foo;
use Foo;
或者只是
use base Foo;
两者都会做。
此外,如果我们需要使用use Foo;
它有什么不同?
最佳答案
use base Module;
如果需要,将始终加载包,但不会从中导入。类似于
BEGIN {
require Module;
push @ISA, 'Module';
}
另一方面,use Module;
将导入模块的默认导出*。类似于
BEGIN {
require Module;
Module->import();
}
因此,除非您想从模块导入,否则不需要 use base 'Foo';
之后的 use Foo;
。
* — 从技术上讲,如果模块定义了这样的方法,它只会调用不带参数的 import
。我所描述的是 import
方法的正常行为。
关于perl - 如果已经有 'use'语句,是否需要使用 'use base',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13796486/