假设我有
my %foo;
是否可以通过切片并使用后缀符号并行分配来将键foo
,bar
,baz
设置为a
b
c
?
%foo->@{qw/foo bar baz/} = qw/a b c/
我使用了这种语法,并被告知它只是“偶然地起作用”。我看不到它会产生警告,也看不到它在任何地方都有记录。是否支持此行为?
->
的左侧应该是一个返回引用的表达式。使用其他任何东西,后果自负。
%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->{...}
更有效。