Перечисленные литералы являются лексемами, выражениями Perl, а не переменными, поэтому их нельзя вставлять в строки.
__LINE__
Литерал __LINE__ предоставляет номер текущей строки текста программы.
Пример использования:
|
1 |
print __LINE__."\n"; |
__FILE__
Литерал __FILE__ предоставляет имя текущего файла программы.
Пример использования:
|
1 |
print __FILE__."\n"; |
__PACKAGE__
Литерал предоставляет имя текущего пакета программы. Если директива package не использовалась, и текущая программа является пакетом верхнего уровня, __PACKAGE__ вернет значение "main".
Пример использования:
|
1 |
print __PACKAGE__."\n"; |
__END__
Данный литерал обозначает логический конец программы. Расположенная за ним информация не обрабатывается интерпретатором. Часто используется при добавлении POD-документации в файл программы.
__DATA__
Как и __END__, обозначает логический конец программы. Расположенная после него информация не обрабатывается интерпретатором. Но, в отличие от __END__, позволяет получить доступ к следующей за ним информации.
Литерал __DATA__ открывает файл с дескриптором DATA для чтения информации, находящейся в файле программы после него.
В сценарии ее можно получить, прочитав из виртуального файла с дескриптором PACKNAMES::DATA, где PACKNAMES является именем пакета, в котором используется этот литерал. При использовании в сценарии верхнего уровня, имя его пакета - main можно опустить. После чтения информации файл остается открытым, и при необходимости его следует явно закрыть функцией close().
Пример использования __DATA__:
|
1 2 3 4 5 6 7 8 9 10 11 12 |
package Pack; use Exporter 'import'; @EXPORT_OK = qw(print_text); sub print_text { print join("\n", @ISA)."\n"; } 1; __DATA__ Просто текст |
file.pl:
|
1 2 3 4 5 6 |
use Pack; while ($line = <Pack::DATA>) { print $line; } exit; |