Вчера вечером на «Perl and Raku Conference in the Cloud», Sawyer X анонсировал смену основной версии Perl с 5 на 7. Работы уже ведутся, новая версия выйдет в течение года. Большого количества изменений ждать не стоит, если коротко: Perl 7 это всё тот же Perl 5.32 с современными настройками по умолчанию. Вам больше не надо явно подключать возможности которые вы и так используете, их включат для вас!
Что включат?
Полного списка пока нет, но strict и warnigs точно! В 7м релизе сигнатуры скорей всего останутся экспериментальными, utf8 тоже включить не успеют.
Что будет отключено?
- Непрямой вызов методов:
{; package Foo; sub new { bless {} } sub bar { print "Hello from bar()!\n" x pop } } # Нормальный вызов my $foo = Foo->new(); # Непрямой вызов bar $foo 42;
- Пустые слова (barewords) как идентификаторы дескрипторов (за исключением стандартных (STDIN, STDOUT, STDERR))
- Псевдо многомерные хэши в стиле Perl 4.
# примеры взяты из perldoc perlvar $foo{$x,$y,$z} # на самом деле означает $foo{join($;, $x, $y, $z)}
- Старые прототипы в стиле Perl 4. Теперь нужно писать только так:
sub foo :prototype($$) ($left, $right) { return $left + $right; }
Сначала прототип влияющий на компиляцию вызовов, а затем сигнатуры помещающие аргументы в соответствующие переменные во время выполнения.
Тем не менее, останется возможность вернуть всё обратно оптом:
use compat::perl5;
Perl 5.32 переходит в режим долгой поддержки на срок от 5 лет.
Развёрнутый анонс от Брайана Д Фоя: https://www.perl.com/article/announcing-perl-7/
TL;DR версия от него же: http://blogs.perl.org/users/brian_d_foy/2020/06/the-perl-7-tldr.html
>>> Подробности