splice ARRAY
Išmeta elemtus, pažymėtus OFFSET ir LENGTH iš masyvo ir pakeičia juos elementais iš LIST, jei tokių yra. Sąrašo kontekste, gražina elementus, išmestus iš masyvo. Skaliariniame kontekste, gražina paskutinį išmestą elementą arba undef
jei pašalintų elementų nebuvo. Masyvas didėja arba mažėja kaip būtina. Jei OFFSET yra neigiamas, tuomet skaičiavimas prasideda nuo masyvo galo. Jei LENGTH nenurodytas, pašalina viską nuo OFFSET tolyn. Jei LENGTH yra neigiamas, pašalina elementus nuo OFFSET tolyn, išskyrus -LENGTH elementų iš masyvo galo. Jei abu - OFFSET ir LENGTH nenurodyti, pašalina viską. Jei OFFSET yra už masyvo pabaigos, Perl įspėja ir sustoja ties masyvo pabaiga.
Toliau eina lygybės (atsižvelgiant į tai, kad $[ == 0 and $#a >= $i
)
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)
Pavyzdys, tariantis, kad masyvo ilgiai perduodami prieš masyvus:
sub aeq { # lyginamos dvi sarašų reikšmės
my(@a) = splice(@_,0,shift);
my(@b) = splice(@_,0,shift);
return 0 unless @a == @b; # tas pats?
while (@a) {
return 0 if pop(@a) ne pop(@b);
}
return 1;
}
if (&aeq($len,@foo[1..$len],0+@bar,@bar)) { ... }