获取除数组中第一个之外的所有内容

时间:2014-03-08 15:52:56

标签: arrays perl

我想切片数组以创建一个新数组,其中包含数组中除第一个条目之外的所有条目。 这就是我的尝试:

@arguments = $splittedCommands[1..-1];  

这给了我一个空洞的结果。 1应该是第二个条目,-1应该是最后一个,所以为什么这不起作用?

3 个答案:

答案 0 :(得分:5)

切片数组时,你应该在数组前面使用@$告诉你正在访问数组中的单个标量值),所以

my @arguments = @splittedCommands[ 1 .. $#splittedCommands ];

其次,您的范围应该是-$#splittedCommands .. -11 .. $#splittedCommands,以后会更加普遍和直接。

答案 1 :(得分:5)

最简单的方法是使用

将其分配到另一个列表中
( undef, my @commands ) = @splittedCommands;

此处分配到undef会丢弃第一个结果,其余部分会进入@commands

另一种方法可能是分配批次然后删除第一个

my @commands = @splittedCommands;
shift @commands;

如果您不再需要保留原始数组,这也可以简化;只需shift @splittedCommands关闭{{1}}的第一项,然后直接使用它。

答案 2 :(得分:1)

如果原始数组必须保持原样,那么显而易见的方法似乎是复制整个数组并删除第一个元素。

shift(my @commands = @splittedCommands)

会做得很好