3
@a=(6,3,5,7);
@b=(@a[0..3])[2..3];
print @b;
#print 57
但
@[email protected][0..3][2..3];
我得到一個語法錯誤。有人能解釋爲什麼嗎?
@a=(6,3,5,7);
@b=(@a[0..3])[2..3];
print @b;
#print 57
但
@[email protected][0..3][2..3];
我得到一個語法錯誤。有人能解釋爲什麼嗎?
的$一個[1] [2]用於2頁維的表,實際上它是短爲$一[1] - > [2]
所以該第一分度需要返回一個引用不是數組的一部分。
語法錯誤來自Perl不知道如何解引用數組的事實。
@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");
@[email protected][2..3];
print("\@c=" . join(",",@c) . "\n");
請注意,我用Perl調試器來了解你的程序。你也可以這樣做,如果你不確定Perl到底是在做什麼的話。
我想這意味着數組的切片不是列表。如果這是第二個例子會編譯。 – Aftershock 2010-06-21 13:20:30
不,這意味着切片不是指向另一個陣列的指針。在第一個例子中,你首先用括號得出一個列表來評估一個切片,然後你拿一個切片。在第二個示例中,perl嘗試查找第一個索引所指向的數組,它查找數組而不是指針/引用並失敗。 – 2010-06-21 13:33:23