Perl中的双重索引,为什么会这样?

Aft*_*ock 3 arrays perl multidimensional-array

@a=(6,3,5,7);

@b=(@a[0..3])[2..3];

print @b;

#print 57
Run Code Online (Sandbox Code Playgroud)

但对于

@b=@a[0..3][2..3];
Run Code Online (Sandbox Code Playgroud)

我收到语法错误.有人能解释为什么吗?

Pet*_*ans 8

$ a [1] [2] for用于二维表,实际上它是$ a [1] - > [2]的缩写

所以第一个索引需要返回一个引用而不是一个数组的切片.

语法错误来自于Perl不知道如何取消引用数组的事实.

  • 不,这意味着切片不是指向另一个数组的指针.在第一个示例中,您首先使用括号生成一个切片来评估切片,然后您将切片.在第二个示例中,perl尝试查找第一个索引指向的数组,它找到一个数组而不是指针/引用并失败. (4认同)