Spec-Zone.ru › Perl 5.36

экспериментальный

СОДЕРЖАНИЕ

  • НАЗВАНИЕ
  • ВЕРСИЯ
  • СИНТЕКС
  • ОПИСАНИЕ
    • Порядок важен
    • Оговорка
  • СМОТРИТЕ ТАКЖЕ
  • АВТОР
  • АВТОРСКИЕ ПРАВА И ЛИЦЕНЗИЯ

НАЗВАНИЕ

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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API