экспериментальный
СОДЕРЖАНИЕ
ИМЯ
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