既然在 Perl 中数组和散列只能包含标量,为什么在访问数组或散列元素时必须使用 $ 告诉解释器该值是标量?换句话说,假设你有一个 array@myarray
和一个 hash %myhash
,你为什么需要这样做:
$x = $myarray[1];
$y = $myhash{'foo'};
而不仅仅是做:
$x = myarray[1];
$y = myhash{'foo'};
为什么上面有歧义?
如果在那个地方不是 $ 的话,那不是非法的 Perl 代码吗?例如,在 Perl 中,以下所有内容不都是非法的吗?
@var[0];
@var{'key'};
%var[0];
%var{'key'};