我有一个模块说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;
它有什么不同?
答案 0 :(得分:5)
use base Module;
将始终加载包,但不会从中导入。它类似于
BEGIN {
require Module;
push @ISA, 'Module';
}
另一方面, use Module;
将导入模块的默认导出*。它类似于
BEGIN {
require Module;
Module->import();
}
因此,除非您想从模块导入,否则不需要use Foo;
use base 'Foo';
以后的import
。
* - 从技术上讲,如果模块定义了这样的方法,它只会调用import
而不带参数。我所描述的是{{1}}方法的正常行为。