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

Luk*_*uke 1 arrays perl

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

@arguments = $splittedCommands[1..-1];  
Run Code Online (Sandbox Code Playgroud)

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

Сух*_*й27 5

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

my @arguments = @splittedCommands[ 1 .. $#splittedCommands ];
Run Code Online (Sandbox Code Playgroud)

其次,你的范围应为-$#splittedCommands .. -11 .. $#splittedCommands与后来的更加普遍和简单.


Leo*_*erd 5

最简单的方法是将其分配到另一个列表中

( undef, my @commands ) = @splittedCommands;
Run Code Online (Sandbox Code Playgroud)

分配到undef这里会抛弃第一个结果,然后剩下的就会进入@commands

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

my @commands = @splittedCommands;
shift @commands;
Run Code Online (Sandbox Code Playgroud)

如果您不再需要保留原始数组,这也可以简化; 只是shift第一个项目@splittedCommands然后直接使用它.