Учебники

Perl — специальные переменные

Есть некоторые переменные, которые имеют предопределенное и специальное значение в Perl. Это переменные, которые используют знаки пунктуации после обычного индикатора переменной ($, @ или%), такого как $ _ (объяснено ниже).

Большинство специальных переменных имеют английское длинное имя, например переменная ошибки операционной системы $! может быть записано как $ OS_ERROR. Но если вы собираетесь использовать имена, похожие на английский, то вам придется поставить одну строку, используя английский; в верхней части файла вашей программы. Это помогает интерпретатору точно определить значение переменной.

Наиболее часто используемая специальная переменная — это $ _, которая содержит строку ввода и строку поиска по умолчанию. Например, в следующих строках —

Live Demo

#!/usr/bin/perl

foreach ('hickory','dickory','doc') {
   print $_;
   print "\n";
}

При выполнении это даст следующий результат —

hickory
dickory
doc

Опять же, давайте проверим тот же пример без явного использования переменной $ _ —

Live Demo

#!/usr/bin/perl

foreach ('hickory','dickory','doc') {
   print;
   print "\n";
}

При выполнении это также даст следующий результат —

hickory
dickory
doc

При первом выполнении цикла выводится «гикори». Во второй раз печатается «dickory», а в третий раз печатается «doc». Это потому, что в каждой итерации цикла текущая строка помещается в $ _ и используется по умолчанию для печати. Вот места, где Perl примет $ _, даже если вы не укажете его —

  • Различные унарные функции, включая такие функции, как ord и int, а также все тесты файлов (-f, -d), за исключением -t, который по умолчанию равен STDIN.

  • Различные функции списка, такие как печать и отмена связи.

  • Операции сопоставления с образцом m //, s /// и tr /// при использовании без оператора = ~.

  • Переменная итератора по умолчанию в цикле foreach, если не указана другая переменная.

  • Неявная переменная итератора в функциях grep и map.

  • Место по умолчанию для ввода входной записи, когда результат операции линейного ввода проверяется сам по себе как единственный критерий теста while (т. Е.). Обратите внимание, что вне времени теста это не произойдет.

Различные унарные функции, включая такие функции, как ord и int, а также все тесты файлов (-f, -d), за исключением -t, который по умолчанию равен STDIN.

Различные функции списка, такие как печать и отмена связи.

Операции сопоставления с образцом m //, s /// и tr /// при использовании без оператора = ~.

Переменная итератора по умолчанию в цикле foreach, если не указана другая переменная.

Неявная переменная итератора в функциях grep и map.

Место по умолчанию для ввода входной записи, когда результат операции линейного ввода проверяется сам по себе как единственный критерий теста while (т. Е.). Обратите внимание, что вне времени теста это не произойдет.

Специальные типы переменных

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

  • Глобальные скалярные специальные переменные.
  • Global Array Специальные переменные.
  • Global Hash Специальные Переменные.
  • Глобальные специальные файловые дескрипторы.
  • Глобальные специальные константы.
  • Регулярные выражения Специальные переменные.
  • Filehandle Специальные Переменные.

Глобальные скалярные специальные переменные

Вот список всех скалярных специальных переменных. Мы перечислили соответствующие английские похожие имена вместе с символическими именами.