Команда
Пакеты используются в Perl для разделения глобального пространства имен на задаваемые программистом подпространства. Отдельные пространства имен позволяют использовать в каждом из них собственный набор идентификаторов, не конфликтующих с одноименными идентификаторами в других пространствах. Пакет объявляется с помощью команды
package Package; # объявить пакет с именем Package
Подпрограммы и глобальные переменные, определенные после команды
package Package; # начало пакета Package
$variable = 'переменная'; # скаляр из пакета Package
sub subroutine { # подпрограмма из пакета Package
return "$variable";
}
package Another; # начало пакета Another
$variable = 'переменная'; # скаляр из пакета Another
sub subroutine { # подпрограмма из пакета Another
return "$variable";
}
package Package; # продолжение пакета Package
@array = (1..5); # массив из пакета Package
В любом пакете можно обратиться к переменной или подпрограмме из другого пакета, указав ее полное имя. Полное имя (или квалифицированное имя) каждого нединамического программного объекта в Perl состоит из имени пакета и идентификатора. Символы
$Package::variable - скалярная переменная из пакета Package
$Another::variable - скалярная переменная из пакета Another
&Package::subroutine - подпрограмма из пакета Package
Package::subroutine - префикс подпрограммы можно не писать
Если глобальные имена не описаны явно в составе какого-либо пакета, то по умолчанию они относятся к пакету main. Можно считать, что объявление этого пакета неявно присутствует в начале любой Perl-программы. Поэтому упоминавшиеся до сих пор глобальные переменные, в том числе большинство специальных, на самом деле относятся к этому пакету. Имя пакета main обычно не указывается, но при необходимости принадлежность к нему можно указать явно:
%pseudo_name = ('Marylin Monroe' => 'Norma Jean');
print $main::pseudo_name{'Marylin Monroe'};
Следующие варианты записи имени обозначают одну и ту же переменную из пакета по умолчанию:
@main::array # с явным именем пакета main
@::array # с пустым именем пакета
@array # без имени пакета
Имена пакетов не применяются к лексическим переменным, объявленным с помощью функций
Вильям Л Саймон , Вильям Саймон , Наталья Владимировна Макеева , Нора Робертс , Юрий Викторович Щербатых
Зарубежная компьютерная, околокомпьютерная литература / ОС и Сети, интернет / Короткие любовные романы / Психология / Прочая справочная литература / Образование и наука / Книги по IT / Словари и Энциклопедии