2016-12-28 45 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 - 感谢您的建议。我会在下一次做。 –