语法
splice ARRAY,OFFSET,LENGTH,LIST
splice ARRAY,OFFSET,LENGTH
splice ARRAY,OFFSET
splice ARRAY
功能
从ARRAY数组中OFFSET处向后删除LENGTH个元素,如果LIST参数存在,则用LIST在ARRAY中替换被删除掉的元素。在列表上下文中返回被删除元素的列表,在标量上下文中返回被删除的最后一个元素,如果没有删除任何元素则返回undef。
- 如果OFFSET主负,则从数组末尾开始向前计数-OFFSET为其起始位置。
- 如果省略LENGTH,则删除从OFFSET之后的所有元素。
- 如果LENGTH为负,则从数组末尾开始计数LENGTH个元素,然后从OFFSET位置到LENGTH位置之间的元素会被删除。
- 如果省略OFFSET和LENGTH,则删除所有内容。
- 如果OFFSET超出阵列的末尾,并且提供了一个LENGTH,则Perl发出警告,并在数组的末尾进行拼接。
例子
push(@a,$x,$y) splice(@a,@a,0,$x,$y)
pop(@a) splice(@a,-1)
shift(@a) splice(@a,0,1)
unshift(@a,$x,$y) splice(@a,0,0,$x,$y)
$a[$i] = $y splice(@a,$i,1,$y)
sub nary_print {
my $n = shift;
while( my @next_n = splice @_, 0, $n) {
say join q{ -- }, @next_n;
}
}
nary_print(3, qw(a b c d e f g h));
# prints:
# a -- b -- c
# d -- e -- f
# g -- h