父母和@ISA做同样的工作,父母和@ISA的使用是相应的。
package Baz;
use parent qw(Foo Bar);
或
package Baz;
BEGIN
{
require Foo;
require Bar;
push @ISA, qw(Foo Bar);
}
答案 0 :(得分:8)
use parent
只是一种简洁的方式来执行require
并在一个语句中将包名称推送到@ISA
。它发生在编译时,而不是在运行时完成的简单our @ISA = qw/ Foo Bar /
,这意味着您必须只编写一次包名称,这可能会减少错误。如果包试图从同名的包继承,它也会引发警告,这将是无用的并且可能导致无限的继承循环。
简而言之,use parent
是一种更简洁,更简单的方法,可以使一切正确。
答案 1 :(得分:4)
parent
是用于设置包的@ISA
变量并在编译时自动加载其超类的语法糖。作为parent
documentation状态,OP中的两个代码块之间没有功能差异。