Ответ 1
Чтобы расширить комментарий Mat, такие вещи подробно описаны в perldocs
.
Относительно @ISA
, вот что он говорит:
Класс - это просто пакет
...
Каждый пакет содержит специальный массив с именем
@ISA
. Массив@ISA
содержит список родительских классов этого класса, если таковые имеются. Этот массив когда Perl делает разрешение метода, которое мы рассмотрим позже.Можно вручную установить
@ISA
, и вы можете увидеть это в более ранних версиях Perl-код. В гораздо более старом коде также используется прагмаbase
. Для нового кода, мы рекомендуем использовать прагмуparent
для объявления ваших родителей. Эта прагма позаботится о настройке@ISA
. Он также загрузит родительских классов и убедитесь, что пакет не наследуется от сам по себе.Однако родительские классы установлены, переменная package
@ISA
будет содержат список этих родителей. Это просто список скаляров, каждая из которых представляет собой строку, соответствующую имени пакета.
our
и @ISA
идут рука об руку, потому что ожидается, что @ISA
будет переменной пакета.