Язык программирования Perl

Специальные переменные


В языке Perl существует большое число предопределенных переменных, хранящих разного рода текущую системную и пользовательскую информацию. Они называются специальными переменными, а их имена обычно состоят из одного специального символа. Вот некоторые из специальных переменных:

$_ область ввода или поиска по образцу, используемая по умолчанию $. номер текущей считанной строки из текущего входного файла $/ разделитель входных записей (обычно - символ новой строки \n) $] номер версии Perl (например, 5.008007) $0 имя файла текущей исполняемой Perl-программы $@ сообщение об ошибке при выполнении в блоках eval или do $! текущий номер ошибки или сообщение об ошибке $^E уточненное сообщение об ошибке $^T время начала выполнения программы (в формате функции time)

Некоторые специальные переменные доступны только для чтения, значения же других могут изменяться по усмотрению программиста. Поскольку нелегко запомнить назначение специальных переменных по их "очень специальным" именам, существует указание компилятору (use English), которое позволяет обращаться к ним по более понятным длинным именам, например:

$ARG вместо $_ $INPUT_LINE_NUMBER вместо $. $INPUT_RECORD_SEPARATOR,$RS вместо $/ $PERL_VERSION вместо $] $PROGRAM_NAME вместо $0 $EVAL_ERROR вместо $@ $OS_ERROR, $ERRNO вместо $! $EXTENDED_OS_ERROR вместо $^E $BASETIME вместо $^T

Полный список специальных переменных с их именами, а также советы по их использованию с отличными примерами всегда можно узнать из документации, вызвав справку утилитой

perldoc perlvar

О специальной переменной $_ следует поговорить особо. По своему назначению она выполняет роль местоимения "это" или "этот" (английские it или this). Ее употребляют, чтобы обратиться к обрабатываемому в текущий момент значению или порции данных. Эту переменную еще называют "переменной по умолчанию" или "буферной переменной", и многие встроенные функции в Perl-программе работают именно с этой переменной, если явно не указан другой аргумент. Например, при чтении из файла в нее может помещаться введенная строка, а функция print без параметров печатает значение переменной по умолчанию $_.

Большинство специальных переменных являются глобальными, и программисту нужно быть очень осторожным при изменении их значений, так как в других частях программы и в подключаемых модулях может предполагаться их стандартное значение. Чтобы избежать нежелательной модификации таких переменных, нужно в каждой подпрограмме или блоке перед их изменением явно объявить их с помощью описателя local:

local $save_value = $_;

Тогда при выходе из блока будет восстановлено предыдущее значение специальной переменной.



Содержание раздела