我有一个模块说 Foo.pm
package Foo;
sub new {
}
sub SomeMethod {
}
1;
Run Code Online (Sandbox Code Playgroud)
然后是一个子类,Foo::Bar
Foo/Bar.pm
package Foo::Bar;
use base Foo;
use Foo;
sub SomeMethod {
}
1;
Run Code Online (Sandbox Code Playgroud)
现在我们需要使用
use base Foo;
use Foo;
Run Code Online (Sandbox Code Playgroud)
要不就
use base Foo;
Run Code Online (Sandbox Code Playgroud)
会做两件事.
如果我们需要使用 use Foo;
它有什么不同?
use base Module;
如果需要,将始终加载包,但不会从中导入.它类似于
BEGIN {
require Module;
push @ISA, 'Module';
}
Run Code Online (Sandbox Code Playgroud)
use Module;
另一方面,将导入模块的默认导出*.它类似于
BEGIN {
require Module;
Module->import();
}
Run Code Online (Sandbox Code Playgroud)
因此,除非您要从模块导入,否则不需要use Foo;
以下内容use base 'Foo';
.
* - 从技术上讲,import
如果模块定义了这样的方法,它只是不带参数调用.我所描述的是import
方法的正常行为.
归档时间: |
|
查看次数: |
63 次 |
最近记录: |