ARRAY
から OFFSET
と LENGTH
で示された要素を除き、
LIST
があればそれと入れ替える。配列から除かれた要素を返す。
配列は必要に応じて大きくなったり小さくなったりする。
LENGTH
を省略すると、OFFSET
以降の要素が全て除かれる。
次の例は全てそれぞれ同等である。($[ == 0
であると仮定している。)
push(@a,$x,$y) splice(@a,$#a+1,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[$x] = $y splice(@a,$x,1,$y);
次の例は、配列の長さが配列の前に渡されると仮定している。
sub aeq { # 2 つの配列値を比較する
local(@a) = splice(@_,0,shift);
local(@b) = splice(@_,0,shift);
return 0 unless @a == @b; # 同じ長さ?
while (@a) {
return 0 if pop(@a) ne pop(@b);
}
return 1;
}
if (&aeq($len,@foo[1..$len],0+@bar,@bar)) { ... }