3

父母和@ISA都在做同样的工作,相应地使用父母和@ISA。

package Baz;
    use parent qw(Foo Bar);

或者

package Baz;
    BEGIN 
    {
        require Foo;
        require Bar;
        push @ISA, qw(Foo Bar);
    }
4

2 回答 2

9

use parent只是在一个语句中执行 arequire并将包名称推送到的一种简洁方法。@ISA它发生在编译时,而不是our @ISA = qw/ Foo Bar /在运行时完成的简单操作,这意味着您只需对包名称进行一次编码,这可能会减少错误。如果包试图从同名包继承,它也会引发警告,这将是无用的,并且可能导致无限继承循环。

简而言之,use parent这是一种更简洁、更简单的方法来让一切都变得正确。

于 2013-04-22T20:10:37.023 回答
5

parent是语法糖,用于设置包的@ISA变量并在编译时自动加载其超类。正如parent文档所述,OP 中的两个代码块之间没有功能差异。

于 2013-04-22T20:11:05.467 回答