экспериментальный
СОДЕРЖАНИЕ
НАЗВАНИЕ
experimental - Экспериментальные возможности сделаны простыми
ВЕРСИЯ
версия 0.031
СИНОПСИС
use experimental 'lexical_subs', 'signatures';
my sub plus_one($value) { $value + 1 } ОПИСАНИЕ
Данный pragma предоставляет простой и удобный способ включения или отключения экспериментальных возможностей.
В каждой версии Perl присутствует определённое количество возможностей, но рассматриваются как "экспериментальные". В течение большей части жизни Perl 5, это было только обозначение, найденное в документации. Начиная с Perl v5.10.0, и более активно в v5.18.0, экспериментальные возможности были помещены за pragmata, используемые для включения функции и отключения связанных предупреждений.
Pragma 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
-
extra_paired_delimiters- разрешает использование большего количества парных строковых разделителей, чем традиционных четырёх,< >,( ),{ }и[ ].Это было добавлено в perl 5.36.
-
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, а затем стало неэкспериментальным (и всегда включенным) в 5.26.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.
Функция будет устаревшей в perl 5.38.0 и удалена в 5.42.0.
-
switch- разрешает использование~~, given и whenЭто было добавлено в perl 5.10.0.
Функция будет устаревшей в perl 5.38.0 и удалена в 5.42.0.
-
try- разрешает использованиеtryиcatchЭто было добавлено в perl 5.34.0
-
win32_perlio- разрешает использование слоя ввода-вывода :win32.Это было добавлено в perl 5.22.0.
Порядок важен
Использование этого pragma для 'включения экспериментальной функции' - это другой способ сказать, что этот pragma отключит предупреждения, которые возникнут при использовании этой функции. Поэтому порядок применения pragmata важен. В частности, вы, вероятно, захотите включить экспериментальные функции *после* включения предупреждений:
use warnings;
use experimental 'smartmatch'; Вы также должны позаботиться о модулях, которые включают предупреждения для вас. Типичным примером является Moose. В этом примере, предупреждения для функции 'smartmatch' сначала включаются с помощью pragma warnings, отключаются pragma experimental и снова включаются модулем Moose (исправление заключается в перестановке последних двух строк):
use warnings;
use experimental 'smartmatch';
use Moose; Оговорка
Из-за характера активируемых функций, совместимость в будущем не гарантируется никоим образом.
СМОТРИТЕ ТАКЖЕ
perlexperiment содержит дополнительную информацию об экспериментальных функциях.
АВТОР
Leon Timmermans <leont@cpan.org>
АВТОРСКИЕ ПРАВА И ЛИЦЕНЗИЯ
Данное программное обеспечение является авторским правом (c) 2013 г. Leon Timmermans.
Это свободное программное обеспечение; вы можете перераспределять его и/или изменять его в соответствии с условиями системы языка программирования Perl 5.
© 1993–2023 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.38.0/experimental