Введение в Perl - Маслов Владимир Викторович. Страница 6

$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 -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

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

@ARGV

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

@INC

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

%INC

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

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

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

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

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

Регулярные выражения (шаблоны)

В данной главе описывается синтаксис регулярных выражений. Чаще всего в Перл они используюстя в операторах поиска и замены таких как s// m/ операторах связки =~ или != и т.д.

Как правило все эти операторы имеют схожие опции такие как:

i – не различать строчные и заглавные буквы.

m – считать строку многострочной.

s – однострочная строка.

x – расширенный синтаксис ( использование пробелов и комментариев)

Обычно все эти опции обозначают как '/x'. Их можно использовать даже внутри шаблонов, используя новую конструкцию (?...)

Регулярные выражения или шаблоны (pattern) то же самое что и regexp процедуры в Юниксе. Выражения и синтаксис заимствован из свободно распространяемых процедур V8 Генри Спенсера (Henry Spencer) там же они подробно и описаны.

В шаблонах используются следующие метасимволы (символы обозначающие группы других символов) часто называемых egrep – стандартом:

\ – считать следующий метасимвол как обычный символ.

^ – начало строки

 – один произвольный символ. Кроме '\n' – конец строки.

$ – конец строки

| – альтернатива (или)

()  – группировка

[]  – класс символов

Метасимволы имеют модификаторы (пишутся после метасимвола):

 – повторяется 0 или большее число раз

 – повторяется 1 или большее число раз

 – 1 или 0 раз

{n} – точно n раз

{n,} – по меньшей мере раз

{n,m} – не менше n, но и не больше m

Во все других случаях фигурные скобки считаются обычными (регулярными) символами. Таким образом '*' эквивалентна {0,} , '+' – {1,} и '?' – {0,1}. n и m не могут быть больше 65536.

По умолчанию действие метасимволов «жадно» (greedy). Совпадение распространяется столько раз сколько возможно не учитывая результат действия следуюющих метасимволов. Если вы хотите «уменьшить их аппетит» то используйте символ '?'. Это не изменяет значение метасимволов просто уменьшает распространение. Таким образом:

*? – станет 0 и более

+?  – 1 и более

?? – 0 или 1 раз

{n}? – точно n раз

{n,}? – не меньше n раз

{n,m}? – больше или равно n и меньше m раз

Шаблоны работают так же как и двойные кавычки поэтому в них можно использовать `\` – символы (бакслэш-символы):

\t – символ табуляции

\n – новая строка

\r – перевод каретки

\A – перевол формата

\v – вертикальная табуляция

\a – звонок

\e – escape

\033 – восьмеричная запись символа

\x1A – шестнадцатеричная

\c[ – control символ

\l – нижний регистр следующего символа

\u – верхний регистр -//-

\L – все символы в нижнем регистре до \E

\U – в верхнем -//-

\E – ограничитель смены регистра

\Q – отмена действия как метасимвола

Дополнительно в Перл добавлены следующие метасимволы:

\w – алфавитно-цифровой или '_' символ

\W – не алфавитно-цифровой или '_' символ

\s – один пробел

\S – один не пробел

\d – одна цифра

\D – одна не цифра

Обратите внимание что все это «один» символ. Для обозначения последовательности применяйте модификаторы. Так:

\w+ – слово

\d+ – целое число

[+-]?\d+ – целое со знаком

[+-]?\d+\.?\d* – число с точкой

Кроме того существуют мнимые метасимволы. Обозначающие не существующие символы в месте смены значения. Такие как: