是否支持散列上的 postderef 语法?

Eva*_*oll 5 perl hash postfix-notation

假设我有

my %foo;
Run Code Online (Sandbox Code Playgroud)

我可以通过取一个切片并使用后缀表示法进行并行分配来设置 keys foo, bar, baztoa b c吗?

%foo->@{qw/foo bar baz/} = qw/a b c/
Run Code Online (Sandbox Code Playgroud)

我使用了这种语法,我被告知它只是“意外工作”。我没有看到它产生警告,我也没有看到它在任何地方记录。这种行为是否受支持?

ike*_*ami 8

的左侧->应该是一个返回引用的表达式。使用其他任何东西,风险自负。


%foo->{a} 曾经工作。

$ 5.10t/bin/perl -e'my %foo; %foo->{a} = 1; print "ok\n";'
ok
Run Code Online (Sandbox Code Playgroud)

这被认为是错误。

$ 5.12t/bin/perl -e'my %foo; %foo->{a} = 1; print "ok\n";'
Using a hash as a reference is deprecated at -e line 1.
ok

$ 5.20t/bin/perl -e'my %foo; %foo->{a} = 1; print "ok\n";'
Using a hash as a reference is deprecated at -e line 1.
ok

$ 5.22t/bin/perl -e'my %foo; %foo->{a} = 1; print "ok\n";'
Can't use a hash as a reference at -e line 1.
Run Code Online (Sandbox Code Playgroud)

没有理由相信%foo->@{...}%foo->{...}.


错误报告