
zeigt Ihnen wie es geht.
In Perl lassen sich sehr einfach Listenelemente gezielt einfügen oder löschen.
Elemente werden mit push an das Ende eines Arrays angefügt:
@Liste = qw(eins zwei drei vier); @dazu = qw(AAA BBB); push (@Liste,@dazu); print "@Liste"; |
Als Ausgabe erfolgt:
Elemente werden mit unshift an den Anfang eines Arrays angefügt:
@Liste = qw(eins zwei drei vier); @dazu = qw(AAA BBB); unshift (@Liste,@dazu); print "@Liste"; |
Als Ausgabe erfolgt:
unshift und push beinhalten, in Gegensatz zu shift und pop den Buchsaben u. Daraus kann man folgende Bauernregeln ableiten:
Das letzte Element eines Arrays wird mit pop ausgelesen und aus dem Array entfernt:
@Liste = qw(eins zwei drei vier); pop (@Liste); print "@Liste"; |
Als Ausgabe erfolgt:
Das erste Elemente eines Arrays werden mit shift ausgelesen und aus dem ursprünglichem Array entfernt:
@Liste = qw(eins zwei drei vier); shift (@Liste); print "@Liste"; |
Als Ausgabe erfolgt:
Shift letztendlich gestattet die völlige Freiheit bei der Manipulation
der Anzahl der Elemente in einem Array.
Shift enthält folgende Parameter:
@Liste = qw(eins zwei drei vier); @dazu = qw(AAA BBB); shift (@Liste,1,2,@dazu); print "@Liste"; |
Als Ausgabe erfolgt:
$myList[-1] liefert das letzte Element des Array. Die Zählung erfolgt daher rückwärts.
Durch Zuweisung eines Wertes an $# des Arrays kann dessen Länge beliebig geändert werden. Fehlende Elemente werden eingefügt bzw. bestehende gelöscht.
Verweise innerhalb eines Arrays auf ein anderes Array erfolgen als Referenz auf das andere Array.
Ringförmige Listen werden verwendet um immer Wiederkehrendes zu wiederholen. Achtung: derart verweisende Objekte werden, wenn sie verwaist sind, von der automatischen Speicherverwaltung nicht gelöscht!
Mehrfach vorkommende Werte eines Arrays können über die Bildung eines Keys mit z.B. Wert = 1 im Hash entfernt werden, da nur ein Key in einem Hash vorkommen kann.
Ein bestimmtes Element einer Liste sucht man mit einer foreach - Schleife, mehrere mit grep(). Grep() liefert die gesuchten Werte zurück. Die Originalliste bleibt damit natürlich erhalten.
z.B.: grep(VERGLEICH, @myListe)
@name = qw(Geyer maria gustav emil egon);
@neu = grep(/^[G|g]/,@name);
print join("\n",@neu);
|
Als Ausgabe erfolgt:
Beispiel: Alle einzulesenden Zeilen, die das Wort Schwein enthalten: grep(/\bSchwein\b/,<>)
Beispiel: alle Zahlen, die durch 10 teilbar sind: grep(/!$_%10/,@zahlen)
Im Gegensatz dazu verändert map() jedes Element der Liste, wie im untenstehenden Beispiel zu erkennen ist. Wenn man die ursprünglichen Werte der Liste weiterhin benötigt, müssen sie vor der Anwendung des map-Befehls gespeichert werden!!
z.B.:
@myListe e_tmp = @myListe e;
map(aendereJedesElement() , @myListe e_temp);
oder:
@neueListe = map({ ( my ($x)=$_ ) =~ tr/../../; $x }, @Liste);
@myList = map((length $_),qw(a aa aaa aaaa)); print "@myList"; |
Als Ausgabe erfolgt: