экспериментальный
СОДЕРЖАНИЕ
ИМЯ
experimental - Экспериментальные возможности, упрощенные
ВЕРСИЯ
версия 0.019
СИНОПСИС
use experimental 'lexical_subs', 'smartmatch';
my sub foo { $_[0] ~~ 1 } ОПИСАНИЕ
Этот pragma предоставляет простой и удобный способ включения или отключения экспериментальных возможностей.
В каждой версии Perl есть определенное количество функций, которые считаются «экспериментальными». В течение большей части жизни Perl 5 это обозначение было только в документации. Начиная с Perl v5.10.0, а более активно в v5.18.0, экспериментальные функции были помещены за pragmas, используемые для включения функции и отключения связанных предупреждений.
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.28.3/experimental