Perl 父级和@ISA之间有什么区别?

Perl 父级和@ISA之间有什么区别?,perl,inheritance,Perl,Inheritance,parent和@ISA都在做相同的工作,parent和@ISA的相应用途是什么 package Baz; use parent qw(Foo Bar); 或 package Baz; BEGIN { require Foo; require Bar; push @ISA, qw(Foo Bar); } use parent是一种简单的方法,可以在一条语句中执行require并将包名推送到@ISA上。它发生在编译

parent和@ISA都在做相同的工作,parent和@ISA的相应用途是什么

package Baz;
    use parent qw(Foo Bar);

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

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


简而言之,
use parent
是一种更简洁、更简单的方法,可以让一切正常。

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

您是否在问
@ISA
的作用?方法调用会查询它以查找继承的方法。