如果我=>在数组结构中使用my $arr = [ a => b ];,那么它是一样的my $arr = [a, b];吗?(实际上我在这里有一个不相关的问题,为什么用这种方式初始化数组不需要带arr前缀@?)
资料来源:http://www.misc-perl-info.com/perl-operators.html
如果这是真的,那么perl是否有充分的理由拥有这个看似模糊的功能?
a => b是一样的'a', b.除了自动引用属性之外,隐含关系也很有用.相比:
Point->new('x', $x, 'y', $y)
Point->new(x => $x, y => $y)
Run Code Online (Sandbox Code Playgroud)
[ ... ] 创建一个(匿名)数组并返回对它的引用.
[ ... ]
Run Code Online (Sandbox Code Playgroud)
类似于
do { my @a = ( ... ); \@a }
Run Code Online (Sandbox Code Playgroud)
这就是将结果分配给标量的原因.如果你想创建一个数组,你可以使用my @a,而不是[ ].