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 に答える