В языке Perl определены некоторые специальные переменные, обычно с префиксом $, @ или %, например: $_.
Многие специальные переменные имеют длинные английские имена. Переменная операционной системы $! может быть записана как $OS_ERROR.
Если вы хотите использовать специальные переменные с английскими именами, вам нужно добавить use English в начале программы; Это позволяет использовать специальные переменные описательного английского языка.
Наиболее часто используемая специальная переменная — $_, которая содержит входные данные по умолчанию и содержимое, соответствующее шаблону. Примеры следующие:
Результат выполнения вышеуказанной программы:
GoogleCoderctoTaobao
В следующих примерах мы не используем $_ для вывода содержимого:
Результат выполнения вышеуказанной программы:
GoogleCoderctoTaobao
В этом примере сначала выводится «Google», затем «Codercto» и, наконец, «Taobao».
В итеративном цикле строка текущего цикла будет помещена в $_, а затем выведена через print. Кроме того, print не указывает выходную переменную, а $_ используется по умолчанию.
Вот несколько мест, где Perl будет использовать $_, даже если он не указан:
Различные унарные функции, включая такие функции, как ord() и int(), а также все операции проверки файлов («-f», «-d»), кроме «-t», которая по умолчанию работает с STDIN.
Различные функции списка, такие как print() и unlink().
Операции сопоставления с образцом «m//», «s///» и «tr///» без оператора «=~».
Переменная итерации по умолчанию для циклов foreach, когда другие переменные не заданы.
Неявные переменные итерации для функций grep() и map().
Если « while» имеет только одно условие и это условие проверяет результат операции «», $_ является местоположением по умолчанию для входной записи. Этого не происходит, за исключением условий тестирования «пока». (Мнемоника: в некоторых операциях знак подчеркивания можно опустить.)
По характеру использования специальных переменных их можно разделить на следующие категории:
Глобальная скалярная специальная переменная.
Специальные переменные глобального массива.
Специальная переменная глобального хеша.
Глобальный специальный дескриптор файла.
Глобальные специальные константы.
Специальные переменные регулярных выражений.
Специальная переменная дескриптора файла.
Ниже перечислены все специальные скалярные переменные, включая переменные со специальными символами и английскими формами:
$_ | Ввод по умолчанию и содержимое, соответствующее шаблону. |
$АРГ | |
$. | Текущий номер строки последнего прочитанного дескриптора файла. |
$НР | |
$/ | Введите разделитель записей, который по умолчанию соответствует символу новой строки. Если вы используете переменную undef, будет прочитан конец файла. |
$RS | |
$, | Разделитель выходных полей |
$OFS | |
$ | Разделитель выходных записей |
$ОРС | |
$" | Эта переменная аналогична $, но ее следует использовать для интерполяции значений массива и разделения на строки в двойных кавычках (или аналогичные интерполированные строки). По умолчанию одно пространство. |
$LIST_SEPARATOR | |
$; | Разделитель, используемый при моделировании многомерных массивов. По умолчанию — « 34». |
$SUBSCRIPT_SEPARATOR | |
$^Л | Подача бумаги направляется в выходной канал. По умолчанию — «f». |
$FORMAT_FORMFEED | |
$: | Текущий набор символов, после которого строка может быть разбита для заполнения полей продолжения (начиная с ^) в формате по умолчанию: «n»». |
$FORMAT_LINE_BREAK_CHARACTERS | |
$^А | Переменная для хранения отформатированных данных перед печатью |
$АККУМУЛЯТОР | |
$# | Формат вывода чисел по умолчанию при печати чисел (устарело). |
$ОФМТ | |
$? | Возвращает статус предыдущей внешней команды |
$CHILD_ERROR | |
$! | Числовое значение этой переменной — это значение errno, а строковое значение — соответствующая строка системной ошибки. |
$OS_ERROR или $ERRNO | |
$@ | Сообщение об ошибке команды eval. Если оно пустое, это означает, что последняя команда eval была выполнена успешно. |
$EVAL_ERROR | |
$$ | Номер процесса, выполняющего текущий сценарий Perl |
$PROCESS_ID или $PID | |
$< | Фактический номер пользователя текущего процесса |
$REAL_USER_ID или $UID | |
$> | Эффективный идентификатор пользователя текущего процесса. |
$EFFECTIVE_USER_ID или $EUID | |
$( | Фактический номер пользователя группы текущего процесса |
$REAL_GROUP_ID или $GID | |
$) | Действующий номер пользователя группы текущего процесса. |
$EFFECTIVE_GROUP_ID или $EGID | |
$0 | Содержит имя файла выполняемого скрипта. |
$PROGRAM_NAME | |
$[ | Индекс первого элемента массива, значение по умолчанию — 0. |
$] | Номер версии Perl |
$PERL_VERSION | |
$^Д | значение флага отладки |
$ОТЛАДКА | |
$^Е | Расширенные сообщения об ошибках операционной системы в средах, отличных от UNIX. |
$EXTENDED_OS_ERROR | |
$^Ф | Максимальное значение дескриптора пакета файлов |
$SYSTEM_FD_MAX | |
$^Ч | Статус проверки синтаксиса, активированный компилятором |
$^I | Встроенный редактор значений элементов управления |
$INPLACE_EDIT | |
$^М | Размер пула резервной памяти |
$^О | название операционной системы |
$OSNAME | |
$^П | Внутренняя переменная, определяющая текущее значение отладки. |
$PERLDB | |
$^Т | Время в секундах, когда скрипт начал работать, начиная с начала нового века. |
$BASETIME | |
$^В | Текущее значение аварийного выключателя |
$ВНИМАНИЕ | |
$^X | Имя двоичного исполняемого кода Perl. |
$EXECUTABLE_NAME | |
$АРГВ | Текущее имя файла при чтении из дескриптора файла по умолчанию. |
@АРГВ | Список аргументов командной строки, передаваемых в скрипт |
@ИНК | Список каталогов для поиска при импорте модуля |
@Ф | Ввод массива из командной строки |
%ВКЛ. | Хэш-таблица %INC содержит все файлы, включенные в операторы do или require. Ключ — это имя файла, а значение — путь к файлу. |
% ENV | Содержит текущие переменные среды |
%СИГ | Список сигналов и как с ними обращаться |
АРГВ | Специальные дескрипторы файлов, которые перебирают все имена файлов в переменной массива @ARGV. |
СТДЕРР | Стандартный дескриптор вывода ошибок |
СТАНДИН | стандартный дескриптор ввода |
стандартный вывод | стандартный дескриптор |
ДАННЫЕ | Специальный дескриптор файла относится ко всему в файле после флага __END__, включая содержимое сценария. Или ссылайтесь на все, что находится после флага __DATA__ во включаемом файле. Пока вы читаете данные в том же пакете, __DATA__ существует. |
_ (подчеркивание) | Для кэширования информации о файлах используются специальные дескрипторы файлов (fstat, stat и lstat). |
__КОНЕЦ__ | Логика скрипта завершается, а последующий текст игнорируется. |
__ФАЙЛ__ | текущее имя файла |
__ЛИНИЯ__ | Текущий номер строки |
__УПАКОВКА__ | Имя текущего пакета. Имя пакета по умолчанию — main. |
$н | Содержит n-ю подстроку последнего совпадения с шаблоном. |
$& | Строка предыдущего успешного сопоставления с образцом. |
$MATCH | |
$` | Содержимое перед последней успешно совпадающей подстрокой |
$ПРЕМАТЧ | |
$' | Содержимое после предыдущей успешно совпавшей подстроки |
$POSTMATCH | |
$+ | Последняя скобка, соответствующая предыдущему шаблону поиска по регулярному выражению. Например: /Версия: (.*)|Редакция: (.*)/ && ($rev = $+); |
$LAST_PAREN_MATCH |
$| | Если установлено значение 0, после каждого вызова функции записи или печати автоматически вызывается функция fflush для записи записанного содержимого обратно в файл. |
$OUTPUT_AUTOFLUSH | |
$% | Номер текущей выходной страницы |
$FORMAT_PAGE_NUMBER | |
$= | Текущая длина каждой страницы. По умолчанию — 60. |
$FORMAT_LINES_PER_PAGE | |
$- | Количество строк, оставшихся на текущей странице |
$FORMAT_LINES_LEFT | |
$~ | Имя текущего формата вывода отчета. Значением по умолчанию является имя дескриптора файла. |
$FORMAT_NAME | |
$^ | Имя текущего формата выходного заголовка отчета. Значением по умолчанию является имя дескриптора файла с суффиксом «_TOP». |
$FORMAT_TOP_NAME |