Mit Splice kann man Beliebig viele Elemente eines Arrays hinzufügen, ersetzen oder löschen.
Diese universelle Einsatzmöglichkeit von Splice kann die Einzelfunktionen shift, unshift, pop und push ersetzen.
Der Befehl Splice erwartet folgende, zum Teil optionale, Parameter: 1. Name des zu bearbeitenden Array 2. Indexnummer des Elements, ab dem gelöscht werden soll (Vorsicht: Arrays beginnen mit Element 0, nicht mit 1!) 3. (optional) Anzahl der zu löschenden Elemente. Wenn nicht angegeben, werden alle Elemente bis zum Listenende gelöscht!
Um kein Element zu löschen, also nur einzufügen, muss an dieser Stelle 0 übergeben werden. 4. (optional) Array, das eingefügt oder geändert werden soll.
Heftig, wenn man das so liest. Aber alles halb so wild...
Der Franz wird also aus @a herausgelöst und steht in @b zur Verfügung. Übrigens muß kein @b angegeben werden, dann wird nur der gewünschte Teil herausgelöst und wandert ins Nirvana.
Nächstes Beispiel
@a=("hans","franz","peter"); splice(@a,1,2);
Es wurden also die letzten beiden Elemente gelöscht.
Elemente ändern
@a=("hans","franz","peter"); splice(@a,1,2,("walter","anna")); print "a: @a";
Ausgabe:
hans walter anna
Die Elemente franz und peter wurden also ersetzt duch die beiden neuen Elemente.
Man hätte auch schreiben können:
@a=("hans","franz","peter");
@b=("walter","anna"); splice(@a,1,2,@b); print "a: @a";
Ersetze von push, pop, shift und unshift splice(@Array,@Array,0,"Element") ist equivalent zu push(@Array,"Element") splice(@Array,-1) ist equivalent zu pop(@Array) splice(@Array,0,1) ist equivalent zu shift(@Array) splice(@Array,0,0,"Element") ist equivalent zu unshift(@Array,"Element")
Allerdings kann splice eben gleich mehrere Elemente verarbeiten, push, pop, shift und unshift eben immer nur eines.