是否支持在散列上使用postderef语法?

问题描述 投票:3回答:1

假设我有

my %foo;

是否可以通过切片并使用后缀符号并行分配来将键foobarbaz设置为abc

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

我使用了这种语法,并被告知它只是“偶然地起作用”。我看不到它会产生警告,也看不到它在任何地方都有记录。是否支持此行为?

perl hash postfix-notation
1个回答
0
投票

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


%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->{...}更有效。

© www.soinside.com 2019 - 2024. All rights reserved.