экспериментальный
СОДЕРЖАНИЕ
НАЗВАНИЕ
experimental - Легкий способ использования экспериментальных функций
ВЕРСИЯ
версия 0.027
СИНТЕКС
use experimental 'lexical_subs', 'signatures';
my sub plus_one($value) { $value + 1 }
ОПИСАНИЕ
Этот прагма предоставляет простой и удобный способ включения или отключения экспериментальных функций.
Каждая версия Perl содержит определенное количество функций, которые считаются "экспериментальными". В течение большей части срока службы Perl 5 это было всего лишь обозначение в документации. Начиная с Perl v5.10.0 и более активно с v5.18.0, экспериментальные функции были помещены за прагмы, используемые для включения функции и отключения связанных предупреждений.
Прагма experimental существует для объединения необходимых заклинаний в единый интерфейс, стабильный в разных выпусках perl. Для каждой экспериментальной функции это должно включать функцию и отключать предупреждения для окружающего лексического контекста:
use experimental 'feature-name';
Для отключения функции и, при необходимости, повторного включения любых предупреждений используйте:
no experimental 'feature-name';
Поддерживаемые функции, подробно описанные ниже, это:
-
args_array_with_signatures- разрешить использование@_в подпрограммах с сигнатурой.Это поддерживается perl 5.20.0 и выше, но, вероятно, будет удалено в будущем.
-
array_base- разрешить использование$[для изменения начального индекса@array.Это было удалено в perl 5.30.0.
-
autoderef- разрешить push, each, keys и другие встроенные функции для ссылок.Это было добавлено в perl 5.14.0 и удалено в perl 5.24.0.
-
bitwise- разрешить новые битовые операторы для строк.Это было добавлено в perl 5.22.0.
-
builtin- разрешить использование функций в пространстве имен builtin::Это было добавлено в perl 5.36.0.
-
const_attr- разрешить атрибут :const для подпрограмм.Это было добавлено в perl 5.22.0.
-
declared_refs- разрешает алиасинг через присваивание ссылкам.Это было добавлено в perl 5.26.0.
-
defer- разрешает использование блоков defer.Это было добавлено в perl 5.36.0.
-
for_list- разрешает итерирование по нескольким значениям одновременно с помощьюfor.Это было добавлено в perl 5.36.0.
-
isa- разрешает использование инфиксного оператораisa.Это было добавлено в perl 5.32.0.
-
lexical_topic- разрешает использование лексических$_черезmy $_.Это было добавлено в perl 5.10.0 и удалено в perl 5.24.0.
-
lexical_subs- разрешает использование лексических подпрограмм.Это было добавлено в 5.18.0.
-
postderef- разрешает использование постфиксных выражений разыменования.Это было добавлено в perl 5.20.0 и стало неэкспериментальным (и всегда включенным) в 5.24.0.
-
postderef_qq- разрешает использование постфиксных выражений разыменования внутри интерполируемых строк.Это было добавлено в perl 5.20.0 и стало неэкспериментальным (и всегда включенным) в 5.24.0.
-
re_strict- включает строгий режим в регулярных выражениях.Это было добавлено в perl 5.22.0.
-
refaliasing- разрешает алиасинг через\$x = \$y.Это было добавлено в perl 5.22.0.
-
regex_sets- разрешает расширенные символьные классы в скобках в регулярных выражениях.Это было добавлено в perl 5.18.0.
-
signatures- разрешает подпрограммные сигнатуры (для именованных аргументов).Это было добавлено в perl 5.20.0.
-
smartmatch- разрешает использование~~.Это было добавлено в perl 5.10.0, но следует отметить, что существуют значительные несовместимости между 5.10.0 и 5.10.1.
-
switch- разрешает использование~~, given, и when.Это было добавлено в perl 5.10.0.
-
try- разрешает использованиеtryиcatch.Это было добавлено в perl 5.34.0.
-
win32_perlio- разрешает использование IO-слоя :win32.Это было добавлено в perl 5.22.0.
Порядок важен
Использование этого прагмы для 'включения экспериментальной функции' — это другой способ сказать, что эта прагма отключит предупреждения, которые возникли бы при использовании этой функции. Поэтому порядок применения прагм важен. В частности, вы, вероятно, захотите включить экспериментальные функции *после* включения предупреждений:
use warnings;
use experimental 'smartmatch';
Вы также должны позаботиться о модулях, которые включают предупреждения для вас. Общим примером является модуль Moose. В этом примере предупреждения для функции 'smartmatch' сначала включаются с помощью прагмы warnings, выключаются прагмой experimental и снова включаются модулем Moose (исправление заключается в перестановке последних двух строк):
use warnings;
use experimental 'smartmatch';
use Moose;
Оговорка
Из-за природы поддерживаемых функций, обратная совместимость гарантирована никак.
СМОТРИТЕ ТАКЖЕ
perlexperiment содержит более подробную информацию об экспериментальных функциях.
АВТОР
Leon Timmermans <leont@cpan.org>
АВТОРСКИЕ ПРАВА И ЛИЦЕНЗИЯ
Этот программный продукт является авторским правом (c) 2013 года Leon Timmermans.
Это свободное программное обеспечение; вы можете перераспределять его и/или изменять его на тех же условиях, что и сама система программирования Perl 5.
© 1993–2021 Larry Wall and others
Licensed under the GNU General Public License version 1 or later, or the Artistic License.
The Perl logo is a trademark of the Perl Foundation.
https://perldoc.perl.org/5.36.0/experimental