экспериментальный
СОДЕРЖАНИЕ
НАЗВАНИЕ
experimental - Экспериментальные функции, которые легко использовать
ВЕРСИЯ
версия 0.024
СИНОПСИС
use experimental 'lexical_subs', 'smartmatch';
my sub foo { $_[0] ~~ 1 } ОПИСАНИЕ
Эта конструкция предоставляет простой и удобный способ включения или отключения экспериментальных функций.
Каждая версия Perl содержит определённое количество функций, которые считаются «экспериментальными». В течение большей части жизни Perl 5 это было лишь обозначение в документации. Начиная с Perl v5.10.0, и более активно в v5.18.0, экспериментальные функции были помещены за псевдокомандами, используемыми для включения функции и отключения связанных предупреждений.
Конструкция 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.
-
declared_refs- включает алиасирование через присваивание ссылкамДобавлена в Perl 5.26.0.
-
isa- разрешить использование инфиксного оператораisaДобавлена в Perl 5.32.0.
-
lexical_topic- разрешить использование лексических$_черезmy $_Добавлена в Perl 5.10.0 и удалена в Perl 5.23.4.
-
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.
-
win32_perlio- позволяет использовать IO-слой :win32.Добавлена в Perl 5.22.0.
Порядок важен
Использование этой конструкции для «включения экспериментальной функции» — это ещё один способ сказать, что эта конструкция отключит предупреждения, которые возникнут при использовании этой функции. Поэтому порядок применения конструкций важен. В частности, вы, вероятно, захотите включить экспериментальные функции *после* включения предупреждений:
use warnings;
use experimental 'smartmatch'; Вам также нужно позаботиться о модулях, которые включают предупреждения за вас. Типичный пример — Moose. В этом примере предупреждения для функции «умное сопоставление» сначала включаются с помощью конструкции warnings, выключаются с помощью экспериментальной конструкции, и снова включаются модулем 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.34.0/experimental