2

我有一个模块说Foo.pm

package Foo; 
sub new {
}    
sub SomeMethod {
}
1;

然后是一个子类Foo::BarFoo/Bar.pm

package Foo::Bar;
use base Foo;
use Foo; 
sub SomeMethod {
}
1;

现在我们需要使用

use base Foo;
use Foo;

要不就

use base Foo;

两者都会。

另外,如果我们需要使用use Foo;

它有什么不同?

4

1 回答 1

5

use base Module;如果需要,将始终加载包,但不会从中导入。它类似于

BEGIN {
    require Module;
    push @ISA, 'Module';
}

use Module;,另一方面,将导入模块的默认导出*。它类似于

BEGIN {
    require Module;
    Module->import();
}

因此,除非您想从模块导入,否则不需要use Foo;以下内容。use base 'Foo';


import* — 从技术上讲,如果模块定义了这样的方法,它只是不带参数地调用。我描述的是import方法的正常行为。

于 2012-12-10T07:23:04.440 回答