在我问的另一个问题中,我试图找到一种从列表中获取子集列表(或数组)的方法,认为这可以通过切片或拼接来完成。使用数组它就像:
一样简单@arr[2 .. $#arr]
获取一个数组,该数组具有从索引2处的元素到结尾的所有相同元素(即跳过前2个元素)。但是,如何使用列表完成此操作,您无法使用$#arr之类的内容(因为列表没有名称)。所以这就是问题,是否可以使用列表执行此类操作而无需复制到数组或使用多行代码?是否有一些简单的符号来提取到达列表的 end 的任意长度列表(不需要事先知道列表的长度)?换句话说就是这样:
(1,2,3,4,5,6,7)[1 .. -1];
(显然不起作用)
(2,3,4,5,6,7)
是否存在这样的符号或函数(对于列表)?
答案 0 :(得分:9)
sub { @_[1..$#_] }->( 1,2,3,4,5,6,7 )
答案 1 :(得分:0)
对ikegami的解决方案进行概括:
my @a = (1,2,3,4,5,6,7);
my @b = sub { @_[1..$#_] }->(@a);
b现在是(2,3,4,5,6,7)
**您也可以使用splice()以更直接的方式执行此操作:**
my @c = @a;
splice (@c, 0, 1, ());
c现在是(2,3,4,5,6,7)