Встроенные переменные 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' - игнорировать данный сигнал.