Последняя версия 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.