"Введение в Perl" - читать интересную книгу автора (Маслов Владимир Викторович)

Встроенные переменные Перл

Описанные в данной главе переменные имеют в Перл специальные значения.

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

use English;

Точно так же если вы захотите пользоваться переменными и методами текущего указателя файлов вы можете написать:

use FileHandle;

после этого можно можно просто писать:

метод указатель выражение

или

указатель -gt; метод(выражение)


Ниже приводятся имена как в короткой так и в длинной (словесной) форме.

Некоторые из встроенных переменных имеют доступ тоько на чтение поэтому изменить их значение просто не возможно.

$_

$ARG

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

$цифра

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

$amp;

$MATCH

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

$`

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

$'

$POSTMATCH

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

$+

$LAST_PAREN_MATCH

Подстрока найденная в поиске с выбором по «или».

$*

$MULTILINE_MATCHING

Если значение этой переменной установить равным 1 то переменная в которой осуществляется поиск будет считаться многосторочной т.е. содержащей символы '\n' – перевод строки. Если значеие равно 0 то переменная считается однострочной. В Перл версии 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

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

$lt;

$UID

$REAL_USER_ID

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

$gt;

$EUID

$EFFECTIVE_USER_ID

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

$(

$GID

$REAL_GROUP_ID

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

$)

$EGID

$EFFECTIVE_GROUP_ID

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

$O

$PROGRAM_NAME

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

$[

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

$]

$PERL_VERSION

Строка сообщение версии Перл. Печатается по команде perl -v Применяется в программе для определения рабочей версии Перл. В числовом контексте это номер версии плюс номер модификации / 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

Команда запуска Перл. Аналогично argv[0] в С.

$ARGV

Имя текущего файла читаемого оператором 'amp;lt;gt;'.

@ARGV

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

@INC

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

%INC

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

$ENV{выражение}

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

$SIG{выражение}

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