Artikel im Internet unter http://www.hidemail.de/blog/splice-perl.shtml.
Montag, 29.1.2007, 16:40:52 Uhr
Splice() in Perl
Der Befehlt Splice() ist ein sehr mächtiger Befehl in Bezug auf die verarbeitung von Arrays.
Syntax:
@LIST = splice(@ARRAY, OFFSET, LENGTH, @REPLACE_WITH);
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...
Beispiele
Einfacher Fall:
@a=("hans","franz","peter");
@b=splice(@a,1,1);
print "a: @a\nb: @b";
Ausgabe:
a: hans peter
b: franz
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);
print "a: @a";
Ausgabe: hans
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";
Nächstes Beispiel, Elemente einfügen
@a=("hans","franz","peter");
splice(@a,2,0,"walter");
print "a: @a";
Ausgabe:
hans franz walter peter
Es wurde VOR peter das Element walter eingefügt.
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.
Artikel im Internet unter http://www.hidemail.de/blog/splice-perl.shtml.