Специальные переменные в Perl

$_ - Используется по умолчанию во многих функциях и операциях, в том числе :в качестве области поиска в операциях сопоставления с образцом m//, замены s/// и транслитерации y///, когда область поиска не задана явно операцией связывания =~; в качестве области ввода, когда условное выражение оператора while состоит из единственной операции ввода <>; в качестве параметра функции chop, split, print; в качестве переменной цикла в операторе foreach, если переменная цикла не задана явно.

$nn - Переменные $1, $2,... содержат подобразы из соответствующих наборов круглых скобок в последней успешной операции сопоставления с образцом.

$& - Часть строки, найденная при последней успешной операции сопоставления с образцом.

$` - Часть строки, стоящая перед совпавшей частью при последней успешной операции сопоставления с образцом.

$' - Часть строки, стоящая после совпавшей части при последней успешной операции сопоставления с образцом.

$+ - Содержит подобразец из последнего набора круглых скобок в последней успешной операции сопоставления с образцом. Например, в результате операции
"1234.5678"=~m/(\d+)\.(\d+)/;
переменная $+ получит значение 5678.

$. - Номер последней строки, считанной из того файла, для которого выполнялась последняя операция чтения.

$/ - Разделитель записей, считываемых из входного файла. По умолчанию равен символу новой строки.  Может состоять из нескольких символов. Если значение установлено неопределенным при помощи функции undef, то при чтении из входного файла границей записи является признак конца файла.

$| - Обычно данные, выводимые в файл функциями print или write, предварительно помещаются в буфер. Когда буфер заполняется, его содержимое записывается в файл.
Буферизация повышает эффективность операций вывода. По умолчанию Perl использует буферизацию для каждого выходного файла, что ссответствует нулевому значению переменной $|.
Чтобы ее отменить, следует выбрать файл при помощи функции select и установить значение переменной $| не равным 0.

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

$\ - Разделитель выходных записей для функции print. Добавляется в конец списка параметров функции print. По умолчанию равен нулевому символу.
Если установить его значение равным символу новой строки, каждый вызов функции print будет завершаться переводом на новую строку.

$" - Когда переменная-массив, заключенная в двойные кавычки, передается в качестве параметра функции print, ее элементы при выводе разделяются последовательностью символов, содержащейся в переменной $".
По умолчанию ее значением является символ пробела.

$; - Символ, используемый в качестве разделителя индексов при эмуляции многомерных массивов. Значение по умолчанию \034. Интерпретатор, встретив запись $array{"bim","bom"}, преобразует ее к виду $array{"bim" . $; . "bom"}.

$# - Формат, используемый по умолчанию для вывода чисел. Значение по умолчанию %20g, что означает представление выводимых чисел в формате с 20 знаками после десятичной точки.
Не рекомендуется использовать в версиях Perl 5 и старше.

$% - Каждый файл, открываемый программой Perl для ввода, имеет свою копию переменной $%, в которой храниться номер текущей страницы. В каждый момент значение переменной $% равно номеру текущей страницы текущего файла вывода.

$= - Длина текущей страницы текущего файла вывода. По умолчанию значение равно 60.

$- - Число строк, оставшихся на текущей странице текущего файла вывода.

$~ - Имя текущего формата для текущего файла вывода. Значением по умолчанию является имя дескриптора этого файла.

$^ - Имя текущего формата заголовка страницы для текущего файла вывода. Значением по умолчанию является имя дескриптора файла, к которому добавлен суффикс _TOP.

$: - Текущее множество символов переноса слова. Если поле вывода в формате начинается с символа ^, то интерпретатор помещает в это поле вводимое слово только тогда, когда в нем достаточно места для этого слова. Чтобы определить, может ли слово поместится в поле формата, интерпретатор подсчитывает число символов между следующими выводимым символом и следующим символом переноса слова. Символ переноса слова обозначает или конец слова, или место, где слово может быть разбито на две части. По умолчанию значением переменно $: является строка, состоящая из символов пробела, новой строки и дефиса:" \n-".

$^L - Признак перехода на новую страницу, используемый в шаблонах формата. Значение по умолчанию \f.

$^A - Аккумулятор, используется функцией write() для временного хранения выводимых отформатированных строк.

$? - Информация, возвращаемая последней операцией ``, операцией закрытия програмного канала или вызовом функции system. Представляет 16-битное целое число, состоящее из двух частей по 8 бит. Старшие 8 разрядов содержат код завершения процесса, младшие - дополнительную системную информацию о завершении процесса.

$! - Некоторые функции Perl обращаются к функциям операционной системы. Если системная функция генерирует ошибку, код ошибки сохраняется в переменной $!.  В числовом контексте переменная $! дает код системной ошибки, в строковом контексте - соответствующее текстовое сообщение.

$^E - Информация о системной ошибке, специфическая для текущей операционной системы. Отличается от переменной $! для платформ Win32, OS/2 и VMS, для остальных платформ эти переменные совпадают.

$@ - Сообщение об ошибке, сгенерированное интерпретатором в результате последнего вызова функции eval(). Нулевое значение означает, что функция eval() завершилась успешно.

$$ - Идентификатор процесса выполняющегося интерпретатора perl.

$< - Действительный идентификатор пользователя данного процесса.

$> - Эффективный идентификатор пользователя данного процесса.

$( - Действительный идентификатор группы данного процесса.

$) - Эффективный идентификатор группы данного процесса.

$0 - Имя файла, содержащего выполняющуюся Perl-программу.

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

$] - Номер версии интерпретатора perl.

$^D - Текущее значение флагов отладки, которые передаются при вызове интерпретатора с ключом -D.

$^F - Максимальный номер дескриптора системного файла. Обычно системными файлами считаются стандартные файлы STDIN, STDOUT, STDERR, которые в OC UNIX имеют дескрипторы 0, 1, 2 соответственно. Поэтому значением по умолчанию является 2.

$^H - Значение, содержащее информацию о том, какие проверки синтаксиса заданы дерективой use strict.

$^I - При вызове интерпретатора Perl с флагом -iextension входные файлы, полученные при помощи операции <>, можно редактировать непосредственно на месте. При этом для резервной копии файла используется имя с расширением extension. Это расширение и сохраняется в переменной $^I. Если ее значение сделать неопределенным при помощи функции undef, редактирование на месте будет запрещено.

$^M - Эта переменная используется только в специально скомпилированной версии интерпретатора Perl для создания резервного буфера памяти.

$^O - Имя операционной системы, в которой была осуществлена компиляция данного интерпретатора Perl.

$^P - Содержит внутренние флаги отладчика Perl. Если значение равно 0, режим отладки отключен.

$^R - Результат последнего удачного выполнения конструкции (?{code}), представляющий расширенный синтаксис регулярного выражения.

$^T - Время, когда была запущенна программа. Измеряется в секундах относительно 1970 года.

$^W - Значение ключа командной строки -w. Значение 0 подавляет вывод предупреждающих сообщений о возможных синтаксических и других ошибках, значение 1 - разрешает.

$^X - Имя, по которому была вызвана выполняющаяся программа.

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

@ARGV - Содержит аргументы командной строки выполняющейся программы.

@INC - Содержит имена каталогов, в которых следует искать сценарии Perl, подлежащие выполнению в конструкциях do filename, require или use. Первоначально содержит: имена каталогов, переданные при запуске интерпретатору perl в качестве ключа -I; имена библиотечных каталогов по умолчанию (зависят от операционной системы); символическое обозначение текущего каталога ".".

@_ - Внутри подпрограммы содержится список переданных ей параметров.

%INC - Содержит по одному элементу для каждого файла, подключенного при помощи функции do или require. Ключом является имя файла в том виде, как оно указано в качестве аргумента функции do или require, а значением - его полное маршрутное имя.

%ENV - Содержит текущие значения переменных среды.

%SIG - Служит для настройки обработки сигналов. Ключем является мнемоническое имя сигнала, значением - либо строка "IGNORE" (игнорировать сигнал), либо строка "DEFAULT" (восстановить реакцию на сигнал по умолчанию), либо строка, задающая квалифицированное имя подпрограммы-обработчика сигнала.

@EXPORT - Содержит имена, которые пакет экспортирует по умолчанию.

@EXPORT_OK - Содержит имена, которые пакет экспортирует по запросу вызывающей программы.

ARGV - Дескриптор, ассоциированный с текущим файлом ввода, из которого осуществляется считывание при помощи операции <>. Последовательно ассоциируется с файлами, переданными в программу в качестве аргументов командной строки, имена которых сохраняются в массиве @ARGV.

STDERR - Дескриптор стандартного файла диагностики, который обычно связан с экраном.

STDIN - Дескриптор стандартного файла ввода, обычно ассоциированный с клавиатурой.

STDOUT - Дескриптор стандартного файла вывода, обычно ассоциированный с экраном.

unix-way