perls,数组,数组的可变长度

时间:2015-07-22 20:31:20

标签: arrays perl

我希望修改perl脚本中的一个特定行:

@list = ([$tmp[0],$tmp[1],$tmp[2]]);

我已将其更改为:

if( $input == 3 )
{
        @list = ([$tmp[0],$tmp[1],$tmp[2]]);
}
if( $input == 2 )
{
        @list = ([$tmp[0],$tmp[1]]);
}
if( $input == 1 )
{
        @list = ([$tmp[0]]);
}

上面的代码有效,但我希望它可以使用最多40个$input值。

我尝试了几种不同的方法,但我无法以更优雅的方式对其进行编码,这真让我感到烦恼。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:6)

以下是您所要求的:

@list = [ @tmp[ 0 .. $input-1 ] ];

以下是您想要的:

my @list = @tmp[ 0 .. $input-1 ];

您还可以使用以下方法非常有效地进行后者:

splice(@tmp, $input);

答案 1 :(得分:1)

您可以使用array slice,它会返回您感兴趣的@tmp数组中的元素列表:

my @list = @tmp[0..$input-1];

基本思想是将从索引0开始的元素复制到您感兴趣的最大索引$input