Мой преподаватель раньше говорил что-то как: глобальные переменные использования хорошо при использовании их правильно. Я не думаю, что когда-либо становился хорошим в использовании их правильно, таким образом, я редко использовал их вообще.
Типичное использование @ISA
:
package Foo;
require Bar;
our @ISA = qw/Bar/;
Прагмы base
и parent
загружают запрошенный класс и изменяют @ISA
, чтобы включить его:
package Foo;
use base qw/Bar/;
Если вы хотите множественное наследование, вы можете предоставить более одного модуля для base
или родительского
:
package Foo;
use parent qw/Bar Baz/; #@ISA is now ("Bar", "Baz");
parent
прагма является новой в Perl 5.10.1, но ее можно установить из CPAN, если у вас более старая версия Perl. Он был создан из-за того, что прагму base стало трудно поддерживать из-за «накопившегося в ней мусора». Вы не должны видеть разницы в базовом использовании между ними.
Я думаю, вам следует использовать прагму родительского
вместо base
, как было предложено в perldoc base
.
из perldoc базы ...
package Baz;
use base qw( Foo Bar );
по существу эквивалентен
package Baz;
BEGIN {
require Foo;
require Bar;
push @ISA, qw(Foo Bar);
}
Лично я использую base.