_  _   ,_
/^\/^\-/ @D
~(________/ PERL.LT
|L |L
L L
Straipsniai  Funkcijos 
Funkcijos/splice - pridėti ar išimti elementus iš bet kurios masyvo vietos

  • splice ARRAY,OFFSET,LENGTH,LIST
  • splice ARRAY,OFFSET,LENGTH
  • splice ARRAY,OFFSET
  • 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)) { ... }
algirdas@perl.lt 2005.04.11 - $dabar