带
@a=(6,3,5,7);
@b=(@a[0..3])[2..3];
print @b;
#print 57
但是
@b=@a[0..3][2..3];
我收到语法错误。有人能解释一下原因吗?
答案 0 :(得分:8)
$ a [1] [2] for用于二维表,实际上它是$ a的简称[1] - > [2]
因此,第一个索引需要返回引用而不是数组的切片。
语法错误来自于Perl不知道如何取消引用数组的事实。
答案 1 :(得分:3)
@a=(6,3,5,7);
这将创建一个包含4个元素的数组。
(@a[0..3])
这将返回一个列表,其中包含与@a
相同的四个元素。
(@a[0..3])[2..3];
这将从括号内的4元素列表中选择最后两个元素。
print( join( ",", @b ) );
这会打印5,7
,@a
中的最后两个元素。
为了好玩,请尝试以下方法:
@a=(6,3,5,7);
@b=(@a[0..3]);
print( "\@b=" . join(",",@b) . "\n" );
@c=@b[2..3];
print( "\@c=" . join(",",@c) . "\n" );
请注意,我使用Perl调试器来了解您的程序。如果你不确定Perl实际上是从线到线做什么的话,你也可以这样做。