Значения переменных PERl

Описанные в данной главе переменные имеют в Perl специальные значения. Они обозначаются несколько непривычно для "глаза" программистов, т.к. состоят обычно только из двух символов, причем первый это '$' символ, с которого начинаются имена всех переменных, и произвольный часто не буквенно-цифровой символ. Если вы хотите пользоваться их "нормальными" буквенными синонимами, то вам нужно указать в начале программы:

use English;  
Точно так же если вы захотите пользоваться переменными и методами текущего указателя файлов вы можете написать:
use FileHandle;  
после этого можно просто писать:
метод указатель выражение  
или
указатель -> метод(выражение)  
Ниже приводятся имена как в короткой, так и в длинной (словесной) форме. Некоторые из встроенных переменных имеют доступ только на чтение, поэтому изменить их значение просто невозможно.

$_$ARGПеременная - по умолчанию для операторов ввода и поиска. То есть если в качестве аргумента не указана никакая переменная, то используется именно эта.

$цифраСодержит найденную подстроку в последнем поиске, когда шаблон содержит метасимволы в круглых скобках. Цифра в данном случае, это номер скобок. Первая подстрока имеет номер 1.



$&
$MATCHНайденная подстрока в последнем поиске по шаблону.

$`Подстрока, предшествующая найденной подстроке.

$'
$POSTMATCHПодстрока, последующая за найденной подстрокой.

$+
$LAST_PAREN_MATCHПодстрока, найденная в поиске с выбором по "или".

$*
$MULTILINE_MATCHINGЕсли значение этой переменной установить равным 1, то переменная, в которой осуществляется поиск, будет считаться многострочной, т.е. содержащей символы '\n' - перевод строки. Если значение равно 0, то переменная считается однострочной. В Perl версии 5 и выше не рекомендуется использовать эту переменную.

$.
$INPUT_LINE_NUMBER
$NRНомер прочитанной строки последнего оператора ввода. Закрытие файла вызывает очистку значения этой переменной.

$/
$RS
$INPUT_RECORD_SEPARATORСимвол - признак конца входной строки. По умолчанию это '\n'

$|
$OUTPUT_AUTOFLUSHЕсли присвоить этой переменной ненулевое значение, то будет сброс буфера вывода после каждой операции вывода. Значение по умолчанию - 0

$,
$OFS
$OUTPUT_FIELD_SEPARATORСимвол, добавляемый оператором print после каждого элемента из списка параметров.

$\
$ORS
$OUTPUT_RECORD_SEPARATORСимвол, добавляемый print после вывода всех параметров.

$"
$LIST_SEPARATORАналогичен "$,", но добавляется после каждого элемента массива, указанного в "....".

$;
$SUBSEP
$SUBSCRIPT_SEPARATORСимвол - разделитель для эмуляции многомерных массивов в хеш массивах. По умолчанию '\034'.

$#
$OFMTФормат по умолчанию для вывода чисел.

$%
$FORMAT_PAGE_NUMBERФормат по умолчанию для вывода номеров страниц.

$=
$FORMAT_LINES_PER_PAGEДлина одной страницы. По умолчанию 60 строк.

$-
$FORMAT_LINES_LEFTКоличество оставшихся строк на странице.

$~
$FORMAT_NAMEИмя формата текущего вывода. По умолчанию имя указателя.

$^
$FORMAT_TOP_NAMEИмя текущего формата для заголовка страницы.

$:
$FORMAT_LINE_BREAK_CHARACTERSСимволы переноса строки для многострочных полей. В строке формата такие поля начинаются символом '^'. По умолчанию '\n-'.

$^L
$FORMAT_FORMFEEDСимвол перевода формата ( смены листа). По умолчанию '\f'.

$^A
$ACCUMULATORТекущее значение аккумулятора функции write() для format(). Значение этой переменной можно увидеть только при использовании функции formline(), т.к. write() очищает ее после каждого вывода.

$?
$CHILD_ERRORДанная переменная содержит статус завершения таких процессов как: закрытие pipe, завершение функций system(), wait() и `...`.

$!
$ERRNO $OS_ERRORВ числовом контексте возвращает код ошибки errno. В строковом - строку сообщения об ошибке. Можно принудительно присвоить этой переменной код ошибки, что бы получить системное сообщение для данного кода или установить код завершения для функции die().

$@
$EVAL_ERRORСообщение об ошибке последней команды eval().

$$
$PID
$PROCESS_IDНомер текущего процесса.

$<
$UID
$REAL_USER_IDРеальный UID текущего процесса.

$>
$EUID
$EFFECTIVE_USER_IDЭффективный UID текущего процесса.

$(
$GID
$REAL_GROUP_IDРеальный GID текущего процесса.

$)
$EGID
$EFFECTIVE_GROUP_IDЭффективный GID текущего процесса.

$O
$PROGRAM_NAMEИмя файла программы. Если этой переменной присвоить какое-нибудь значение, то его можно видеть в команде ps, что удобно для контроля за состоянием программы.

$[Номер первого элемента массива или символа строки. Значение по умолчанию - 0.

$]
$PERL_VERSIONСтрока - сообщение версии Perl. Печатается по команде perl -v Применяется в программе для определения рабочей версии Perl. В числовом контексте это номер версии плюс номер модификации / 1000.

$^D
$DEBUGGINGТекущее значение ключа отладки '-D'.

$^F
$SYSTEM_FD_MAXНомер максимального системного описателя файлов (system file descriptor). Обычно это 2.

$^I
$INPLACE_EDITТекущее значение inplace-edit возможности. Для отключения используйте undef.

$^P
$PERLDBВнутренний флаг отладки. Применяется для того, чтобы отладчик не отслеживал самого себя.

$^T
$BASETIMEВремя в секундах с начала 1970 года старта текущей программы.

$^W
$WARNINGЗначение флага '-w'. true -если включено и false - выключено.

$^X
$EXECUTABLE_NAMEКоманда запуска Perl. Аналогично argv[0] в С.

$ARGVИмя текущего файла, читаемого оператором '<>'.

@ARGVМассив параметров строки запуска программы. Внимание! @#ARGV - меньше количества параметров на 1, т.к. $ARGV[0] это первый параметр (не имя программы).

@INCСписок директорий диска, которые просматривает Perl для выполнения команд do, require или use.

%INCЭтот хеш содержит имена директорий для имен использованных файлов командами do или require. Ключ - имя файла, а значение - директория.

$ENV{выражение}Хеш %ENV содержит значения переменных окружения. Изменение этих значений вызывает изменение окружения для процессов потомков.

$SIG{выражение}Хеш %SIG содержит имена подпрограмм для таких системных сигналов как INT, QUIT, PIPE, ... Значение 'DEFAULT' - для системной обработки. 'IGNORE' - игнорировать данный сигнал.