Eva*_*oll 5 perl hash postfix-notation
假设我有
my %foo;
Run Code Online (Sandbox Code Playgroud)
我可以通过取一个切片并使用后缀表示法进行并行分配来设置 keys foo
, bar
, baz
toa
b
c
吗?
%foo->@{qw/foo bar baz/} = qw/a b c/
Run Code Online (Sandbox Code Playgroud)
我使用了这种语法,我被告知它只是“意外工作”。我没有看到它产生警告,我也没有看到它在任何地方记录。这种行为是否受支持?
的左侧->
应该是一个返回引用的表达式。使用其他任何东西,风险自负。
%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->{...}
.
错误报告。