Название
feature - прагма для включения поддержки новых синтаксических возможностей
Синопсис
use feature qw(switch say); # поддержка новых встроенных функций # switch и say given ($foo) { when (1) { say "\$foo == 1" } when ([2,3]) { say "\$foo == 2 || \$foo == 3" } when (/^a[bc]d$/) { say "\$foo eq 'abd' || \$foo eq 'acd'" } when ($_ > 100) { say "\$foo > 100" } default { say "Ни одно условие не сработало" } } use feature ':5.10'; # включить все новые синтаксические # возможности perl 5.10
Описание
Обычно невозможно добавить новый синтаксис в Perl без нарушения правильной
работы некоторых существующих программ. Данная прагма обеспечивает возможность свести
этот риск к минимуму. Новые синтаксические конструкции могут быть включены
конструкцией use feature 'некая_функция'
, и могут использоваться
в её лексической области видимости.
Эффект лексической области видимости
Подобно другим прагмам (use strict
к примеру), feature действует
в лексической области видимости. use feature qw(функция)
подключит
функцию "функция" до конца текущей области видимости.
{ use feature 'say'; say "say доступна здесь..."; } print ".. но не здесь.\n";
no feature
use feature 'say'; say "Здесь можно использовать новую функцию say"; { no feature 'say'; print "Но не здесь.\n"; } say "и здесь say доступна";
no feature
без перечисления функций отключает их все.
Функция 'switch'
use feature 'switch'
сообщает компилятору, что нужно подключить
конструкцию given/when
.
Функция 'say'
use feature 'say'
сообщает компилятору, подключить функцию
'say'.
См. "say" in perlfunc.
Функция 'state'
use feature 'state'
сообщает компилятору подключить
поддержку функции 'state'.
Наборы функций
Можно загрузить все функции разом, используя набор функций (анг. feature bundle).
В настоящее время доступен только один вариант набора функций -
конструкция use feature ":5.10"
, которая эквивалентна
use feature qw(switch say state)
.
Указание подверсий, например 0
в 5.10.0
не имеет никакого эффекта.
Неявная загрузка feature
Есть два пути загрузить прагму feature
неявно:
-
С помощью флага
-E
в командной строке, вместо-e
. Она неявно подключит поддержку всех новых функций. -
По явному требованию минимальной версии Perl для вашей программы конструкцией
use VERSION
, когда указанная версия выше или равна 5.10.0. То есть,use 5.10.0;
неявно подключит:
use feature ':5.10';
Но во избежание предупреждений, связанных с портативностью (анг. portability warnings) (см. "use" in perlfunc), вы пожете писать так:
use 5.010;
с тем же самым эффектом.