П2.4.3 Зарезервированные переменные
В Perl есть имена имеющие специальное значение. Многие из них аналогичны зарезервированным именам в shell.
Если вы хотите использовать длинные имена переменных, в заголовке программы требуется сказать:
use English;
Многие переменные доступны только для чтения, то есть при попытке присвоения такой переменной какого-либо значения напрямую или по ссылке происходит ошибка.
$_ В эту переменную по умолчанию происходит ввод, присваивание, в нее складываются результаты поиска по заданному образцу. while(<>){...}или, что то же самое: while($_= <>) {...}
$<digit> Эта переменная была описана в предыдущем параграфе. Она доступна только для чтения, так же как и переменные $&, $`, $' и $+.
$. Эта переменная содержит номер строки, которая была почитана последней из файла, который был прочитан последним. Она также доступна только для чтения.
$/ Содержит символ по которому разделяются вводимые записи. По умолчанию содержит символ перевода строки. Она похожа на переменную RS из awk.
$| По умолчанию имеет значение 0. Если содержит ненулевое значение, то происходит сброс буферов каждый раз после осуществления вывода (на печать, на экран и т.д.).
$, Содержит символ-разделитель полей для оператора печати. Подобна переменной OFS в awk.
$ Содержит символ-разделитель записей для оператора печати. Подобна переменной ORS в awk. (Вы можете определить $ вместо того, чтобы печатать n в конце печати.)
$" Подобна переменной $,. Но используется при обращении к списку величин в двойных кавычках (или другой строке, которая требует интерпретации). По умолчанию содержит символ пробел.
$; Содержит символ-разделитель для эмуляции многомерных хэшей. Если ссылаться на такой элемент хэша как $foo{$a,$b,$c} то реально это будет происходить так: $foo{join($;,$a,$b,$c)}. Не путайте с @foo{$a,$b,$c}, так как это тоже самое, что($foo{$a},$foo{$b},$foo{$c}). По умолчанию содержит значение \034 такое же как переменная SUBSEP в awk.
$# Формат для печати чисел. Подобна переменной OFMT в awk. Первоначально содержит значение %.20g.
$% Содержит номер текущей выводимой страницы.
$= Содержит длину текущей страницы (количество печатных срок), обычно содержит значение 60.
$- Содержит значение, определяющее количество оставшихся на странице строк, например количество еще не напечатанных строк для печатного канала вывода.
$~ Содержит имя текущего формата сообщений. Обычно имя дескриптора файла.
$^ Содержит имя текущего формата заголовка страницы. Обычно содержит имя дескриптора файла с добавлением в конце _TOP
$: Содержит множество символов после которых вывод сроки может быть прерван и начат снова после перевода строки.
$! Если эта переменная используется в числовом контексте, то содержит текущее значение errno (номер ошибки) со всеми обычными сообщениями. В строковом контексте содержит соответствующее системное сообщение об ошибке.
$@ Содержит сообщение о синтаксической ошибке, допущенной во время исполнения последней команды eval(). Если содержит значение 0, то команда была исполнена корректно. Но заметьте, что сообщения не накапливаются в этой переменной.
$$ Содержит идентификатор текущего процесса.
$< Содержит идентификатор пользователя (UID), которому принадлежит текущий процесс.
$> Содержит эффективный UID текущего процесса.
$( Содержит идентификатор группы (GID) пользователя, которому принадлежит текущий процесс.
$) Содержит эффективный GID текущего процесса.
$0 Содержит имя файла, в котором находится исполняемая программа.
$ARGV Содержит имя текущего файла, из которого происходит чтение.
@ARGV Содержит массив аргументов командной строки, которые были переданы программе.
@INC Содержит список точек входа в программу, в которых используются конструкции do EXPR, require и use.
%INC Содержит входы для каждого файла, который включается посредством использования операторов do или require. Ключами являются имена файлов, а значениями места их расположения.
%ENV Содержит текущее окружение процесса. Изменением содержимого хэша можно изменить окружение порожденного (дочернего) процесса.
%SIG Этот хэш используется для установки обработчиков различных сигналов. Например: sub handler {
local($sig) = @_;
print "Caught a SIG$sig - shutting down\n";
close(LOG);
exit(0);
}
$SIG{'INT'} = 'handler';
$SIG{'QUIT'} = 'handler';
...
$SIG{'INT'} = 'DEFAULT';
$SIG{'QUIT'} = 'IGNORE';