我希望修改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
值。
我尝试了几种不同的方法,但我无法以更优雅的方式对其进行编码,这真让我感到烦恼。
非常感谢任何帮助。
答案 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
。