Выпущен Perl 5.22.0


Последняя версия Perl была выпущена с новым оператором double diamond, поддержкой шестнадцатеричных чисел с плавающей запятой и улучшенным сглаживанием переменных.

Одним из основных улучшений является оператор ввода строки <>. Он принимает имена файлов, хранящиеся в массиве @ARGV, и если вы передадите имя файла, содержащее специальные символы, возможно, удастся взаимодействовать с оболочкой. Добавлен новый оператор ввода строки<<>>, который игнорирует специальные символы.

Одним из спорных шагов является удаление CGI.pm и модуль::Сборка из стандартной библиотеки. Они все еще доступны на CPAN, но аргумент от сопровождающих Perl заключается в том, что они больше не являются мейнстримом. CGI.pm в какой-то момент это был единственный способ генерировать HTML, наряду со многими другими функциями, но теперь он был заменен и удален. Как и то и другое CGI.pm и Module::Build были настолько широко использованы, что вы можете найти старый код, который предполагает, что их присутствие теперь вызовет необъявленную зависимость – проверьте свои объявления.

Добавление псевдонимов переменных означает, что теперь вы можете создать псевдоним для ссылочного значения. Вы также можете создать псевдоним подпрограммы.

В соответствии с дельтой ссылок на изменения в Perl переменные и подпрограммы теперь могут быть изменены путем присвоения ссылки:

\$c = \$d;

\&x = \&y;

Сглаживание также может быть выполнено с помощью обратной косой черты перед переменной итератора foreach; это, пожалуй, самая полезная идиома, которую предоставляет эта функция:

foreach \%hash (@array_of_hash_refs) { … }

Эта функция является экспериментальной и должна быть включена с помощью функции «рефалиазинг». Он будет предупреждать, если не отключена категория предупреждений об экспериментальном::повторном сглаживании.

Еще одним улучшением является возможность использовать повторение при назначении списка. Если вы назначаете один список скаляров другому, теперь вы можете избежать списка недефов, как в:

my(undef, $card_num, undef, undef, undef, $count) = разделить /:/;

и замените его на

my(undef, $card_num, (undef)x3, $count) = разделить /:/;

Хорошее описание этого (и других новых функций) содержится в предварительном просмотре Брайаном Фоем Perl 5.22.


Добавить комментарий