是否支持哈希的 postderef 语法?
Is postderef syntax on hashes supported?
假设我有
my %foo;
我可以将键 foo
、bar
、baz
设置为 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。
假设我有
my %foo;
我可以将键 foo
、bar
、baz
设置为 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。