由于数组和散列只能包含Perl中的标量,为什么在访问数组或散列元素时必须使用$来告诉解释器该值是标量?换句话说,假设您有一个数组@myarray和一个哈希%myhash,为什么需要这样做:
$x = $myarray[1];
$y = $myhash{'foo'};
Run Code Online (Sandbox Code Playgroud)
而不只是做:
$x = myarray[1];
$y = myhash{'foo'};
Run Code Online (Sandbox Code Playgroud)
为什么上面的含糊不清?
如果除了那个地方的$之外,它不是非法的Perl代码吗?例如,Perl中的以下都不是非法的吗?
@var[0];
@var{'key'};
%var[0];
%var{'key'};
Run Code Online (Sandbox Code Playgroud) 我遵循的基本语法教程没有说清楚:
使用前一个或后一个下标符号访问数组之间是否有任何实际/哲学/上下文相关/棘手的区别?
$ perl -le 'my @a = qw(io tu egli); print $a[1], @a[1]'
两种情况下的输出似乎相同.