Perl 5.24: постфиксное разыменование признано стабильным

Начиная с версии 5.24 интерпретатор perl перестаёт выдавать предупреждения по поводу постфиксного разыменования. Функциональность перенесена из разряда экспериментальных в разряд стабильных.

Следующий пример определяет функцию $gimme_a_ref, которая возвращает ссылку на массив, содержащий ссылку на хэш. В цикле foreach сначала разыменовывается процедура. Она возвращает ссылку на массив. Используется постфиксное разыменование для доступа к нулевому элементу массива. Далее снова используется постфиксное разыменование, но уже для доступа к хэшу как к целому объекту. Цикл бегает по ключам возвращённого хэша. Все разыменования записаны в форме слева на право:

use v5.24;

my $gimme_a_ref = sub {
    state $hash_ref = {
        cat => 'Buster',
        dog => 'Addy',
    };
    [ $hash_ref ];
};

foreach my $key ( keys $gimme_a_ref->()->@[0]->%* ) {
    say "key is $key";
}
 
my %hash = reverse $gimme_a_ref->()->@[0]->%*;
say Dumper( \%hash ); use Data::Dumper;

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

# v5.24 won't warn about any of these
use v5.22;
use feature qw(postderef);

no warnings qw(experimental::postderef);

Оригинал: EffectivePerlProgramming

Comments

comments powered by Disqus