2010-01-08 118 views

回答

37

你想

my @slice = @rainbow[0 .. $#rainbow - 5]; 

注意,1是第二個元素,而不是第一個。

+3

萬一任何人需要查找什麼$#數組意味着http://stackoverflow.com/questions/8618858/how-do-dollar-and-number-sign-together-work-in-perl – 2015-02-19 01:03:04

+0

謝謝@Chas,它爲我工作 – 2016-02-15 06:17:30

18

..操作形成從左至右價值range - 如果權大於或等於剩下。另外,在Perl中,數組索引從零開始。

這個怎麼樣?

@slice = @rainbow[0..$#rainbow-5]; 

$#array給出了數組中最後一個元素的索引。

5

從開頭兩句爲range operator,在perlop記載:

二進制「」是的範圍內操作,這是根據上下文實際上是兩個不同的運營商。在列表上下文中,它返回從左值到右值計數(由1開始)的值列表。如果左側值大於右側值,則返回空列表。

當代碼不起作用時,分解它以查看發生了什麼。舉例來說,你會嘗試的範圍內操作,看看它產生:

my @indices = 1 .. -5; 
print "Indices are [@indices]\n"; 

當你有一個空的列表,並意識到有一些事情,你不明白,檢查無論你是文檔試圖去檢查它是否在做你認爲應該做的事情。 :)

相關問題