是否支持哈希的 postderef 语法?

Is postderef syntax on hashes supported?

假设我有

my %foo;

我可以将键 foobarbaz 设置为 a b c 通过获取切片并进行并行分配吗使用后缀表示法?

%foo->@{qw/foo bar baz/} = qw/a b c/

我使用了这种语法,但有人告诉我它只是 "accidentally working"。我没有看到它生成警告,也没有看到它在任何地方记录。是否支持此行为?

->的左边应该是returns引用的表达式。使用其他任何东西都需要您自担风险。


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

$ 5.10t/bin/perl -e'my %foo; %foo->{a} = 1; print "ok\n";'
ok

这被认为是错误。

$ 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.

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


错误 reported