我想切片数组以创建一个新数组,其中包含数组中除第一个条目之外的所有条目.这是我试过的:
@arguments = $splittedCommands[1..-1];
Run Code Online (Sandbox Code Playgroud)
这给了我一个空洞的结果.1应该是第二个条目,-1应该是最后一个,所以为什么这不起作用?
@在切片数组时应该在数组前面使用($告诉你正在访问数组中的单个标量值),所以
my @arguments = @splittedCommands[ 1 .. $#splittedCommands ];
Run Code Online (Sandbox Code Playgroud)
其次,你的范围应为-$#splittedCommands .. -1或1 .. $#splittedCommands与后来的更加普遍和简单.
最简单的方法是将其分配到另一个列表中
( 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然后直接使用它.