2016-12-28 22 views
-4
#! usr/bin/perl 
@months=('Jan','feb','mar','apr','may','jun','jul','aug','sep','oct','nov','dec'); 
@new=('1','2'); 

print "@months\n"; 

splice(@months,0,1,@new); 

print "@months\n"; 

當我運行此我希望輸出是作爲如何在Perl腳本中調試拼接操作?

Jan feb mar apr may jun jul aug sep oct nov dec 
1 2 mar apr may jun jul aug sep oct nov dec 

但我正在逐漸輸出

Jan feb mar apr may jun jul aug sep oct nov dec 
1 2 feb mar apr may jun jul aug sep oct nov dec 

的二月也應由2所取代,對不對?但爲什麼它沒有發生。

+3

檢查拼接的文檔LENGTH。它說'從數組中刪除由OFFSET和LENGTH指定的元素。您將偏移設置爲0,長度設置爲1.因此,從元素0開始刪除1個元素。這就是爲什麼只有jan被刪除。 –

+0

專業提示:儘可能使您的標題儘可能有用,並且在這裏「您能幫我一把嗎」不會添加任何內容來誘使讀者點擊您的問題(並且有些人會避免看起來包含乞討的問題)。 – halfer

回答

6

Syntax of splice command is

splice ARRAY,OFFSET,LENGTH,LIST 

您指定LENGTH爲1,那麼只有一個元素是從原來的列表中刪除(該元素是Jan)。如果你想feb被刪除過,那麼你必須使用一個2

splice(@months, 0, 2, @new); 
+0

謝謝。我推測該命令的語法爲 splice ARRAY,START_INDEX,END_INDEX,LIST。 這就是爲什麼我錯了。 –

+0

@gudipatiramu - 總是最好檢查Perl安裝附帶的文檔或在線檢查文檔。 –

+0

@ChrisDoyle - 感謝您的建議。我會在下一次做。 –