Зарезервированные переменные
В 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';