Spec-Zone.ru › Perl 5.32

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

СОДЕРЖАНИЕ

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

ИМЯ

experimental - Экспериментальные возможности упрощены

ВЕРСИЯ

версия 0.020

СИНОПСИС

use experimental 'lexical_subs', 'smartmatch';
my sub foo { $_[0] ~~ 1 }

ОПИСАНИЕ

Данный пragma предоставляет простой и удобный способ включения или отключения экспериментальных функций.

В каждой версии Perl присутствует определенное количество функций, которые считаются «экспериментальными». В значительной части истории Perl 5 это было только обозначение в документации. Начиная с Perl v5.10.0 и более активно в v5.18.0, экспериментальные функции были размещены за pragmata, используемыми для активации функции и отключения связанных предупреждений.

Pragma experimental существует для объединения необходимых заклинаний в единый интерфейс, стабильный в различных релизах Perl. Для каждой экспериментальной функции это должно активировать функцию и отключить предупреждения для окружающего лексического пространства:

use experimental 'feature-name';

Для отключения функции и, при необходимости, повторного включения любых предупреждений используйте:

no experimental 'feature-name';

Поддерживаемые функции, подробно описанные ниже, это:

  • array_base - разрешить использование $[ для изменения начального индекса @array.

    Это поддерживается во всех версиях Perl.

  • autoderef - разрешить push, each, keys и другие встроенные функции для ссылок.

    Это было добавлено в Perl 5.14.0 и удалено в Perl 5.23.1.

  • bitwise - разрешить новые битовые операторы в строковом формате.

    Это было добавлено в Perl 5.22.0.

  • const_attr - разрешить атрибут :const для подпрограмм.

    Это было добавлено в Perl 5.22.0.

  • lexical_topic - разрешить использование лексических $_ через my $_.

    Это было добавлено в Perl 5.10.0 и удалено в Perl 5.23.4.

  • lexical_subs - разрешить использование лексических подпрограмм.

    Это было добавлено в 5.18.0.

  • postderef - разрешить использование постфиксных выражений разыменования, в том числе в интерполированных строках.

    Это было добавлено в Perl 5.20.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.

  • win32_perlio - разрешает использование IO-слоя :win32.

    Это было добавлено в Perl 5.22.0.

Порядок имеет значение

Использование данного pragma для «активации экспериментальной функции» означает, что это pragma отключит предупреждения, которые возникнут при использовании этой функции. Поэтому порядок применения pragmas важен. В частности, вы, вероятно, захотите активировать экспериментальные функции *после* включения предупреждений:

use warnings;
use experimental 'smartmatch';

Вы также должны быть внимательны к модулям, которые включают предупреждения за вас. Типичным примером является модуль Moose. В данном примере предупреждения для функции «smartmatch» сначала включаются с помощью pragma warnings, отключаются с помощью pragma experimental и снова включаются модулем Moose (исправление заключается в изменении последних двух строк):

use warnings;
use experimental 'smartmatch';
use Moose;

Оговорка

Из-за характера активируемых функций гарантировать совместимость с будущими версиями невозможно.

СМОТРИ ТАКЖЕ

perlexperimental содержит дополнительную информацию об экспериментальных функциях.

АВТОР

Leon Timmermans <leont@cpan.org>

АВТОРСКИЕ ПРАВА И ЛИЦЕНЗИЯ

Данный программный код является собственностью (c) 2013 Leon Timmermans.

Это свободный программный код; вы можете распространять и/или изменять его в соответствии с теми же условиями, что и система программирования Perl 5.

© 1993–2020 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.30.3/experimental

Spec-Zone.ru

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