zurückInhaltvorwärts Perl Einführung: Array Variablen

4.3 Array Variablen

Ein Array ist eine Liste von skalaren Werten. Array variablen beginnen im gegensatz zu normalen skalaren mit einem @. Hier ein Beispiel für die Zuweisung eines Arrays:

@haustiere = ("Hund", "Hamster", "Katze");
@tiere = ("Schwein", "Pferd", @haustiere, "Maus");

Im zweiten Beispiel wird das komplette Array @haustiere in die Array @Tiere eingefügt. Das Array @tiere enthält also ("Schwein", "Pferd", "Hund", "Hamster", "Katze", "Maus").

Auf die einzelnen Arrayelemente wird über einen Index zugegriffen, der mit 0 beginnt. Die Arrayelemente sind also durchnumeriert, wobei man mit 0 anfängt zu zählen.

Hier ein paar Beispiele wie man auf einzelne Array-Elemente zugreift:

print $tiere[0];	# Ergebnis: Schwein
print $tiere[3];	# Ergebnis: Hamster
print $tiere[5];	# Ergebnis: Maus

Die Zuweisung eines Werts an ein einzelnes Element funktioniert ähnlich:

$tiere[3]="Elefant";    # Das vierte Listenelement ist nun Elefant, nicht mehr Hamster
$tiere[6]="Schlange";   # Dies fügt der Liste das siebte Element Schlange hinzu

Wie das letzte Beispiel zeigt, ist die Länge eines Arrays nicht von vorneherein festgelegt. Man kann durch entsprechendes Höhersetzen des Index weitere Elemente an das Ende des Arrays anfügen.

Bei den letzen fünf Beispielen fällt dreierlei auf. Zum einen fehlen die Hochkommata, die in unseren anderen Beispielen die Argumente des print Befehls umschließen. Es ist beim alleinigen Ausdruck von Variabeln nicht notwendig, diese in Hochkommata zu setzen. Ferner fällt auf, daß statt eines @ nun ein $ auftaucht, also nicht @tiere sondern $tiere. Der Grund ist einleuchtend, wenn man sich noch einmal die Definition des Arrays vergegenwärtigt: Eine Liste von Skalaren. Ein einzelnes Element der Liste ist also ein Skalar. Da wir ein einzelnes Element, also ein Skalar, ausdrucken wollen bedienen wir uns der skalaren Schreibweise. Die eckigen Klammern nach $tiere geben an, auf welches Arrayelement zugriffen werden soll. Vergiß nicht, daß der Index mit 0 beginnt und nicht mit 1.

Wenn Du das gesamte Array ausgeben willst, kannst Du einfach folgendes schreiben:

print @tiere;

Es gibt einige Befehle, die den Umgang mit Arrays erleichern:

push(@tiere, "Gecko");    # fügt an das Array-Ende von @tiere
                          # das neue Element Gecko an
push(@tiere, "Tapir", "Ochse");  # fügt die neuen Elemente Tapir und Ochse hinten an                                   # @tiere an
pop(@tiere);        # entfernt das letzte Array-Element
print pop(@tiere);  # das letzte Listen-Element wird ausgedruckt

Beachte, daß der pop Befehl das letzte Element aus dem Array entfernt. Wenn Du also den Befehl

print pop(@tiere);

ausführst, druckst Du nicht nur das letzte Listenelement aus, sondern entfernst es auch. Wenn Du das letzte Listenelement nur ausdrucken willst, muß Du folgendes schreiben:

print $tiere[-1];

Wenn du das vorletzte Element ausdrucken willst, schreibst Du

print $tiere[-2];

Wenn Du also von hinten auf das Array zugreifen willst, fängst Du von hinten mit -1 an zu zählen und arbeitest Dich dann mit -2, -3 etc. weiter vor bis Du wieder beim ersten Listenelement bist.

Wie bereits erwähnt, fügst Du mit dem push Befehl ein neues Element hinten an das Array an und entfernst das letzte Element mit dem pop Befehl. Wenn Du ein neues Element an den Anfang des Arrays anfügen willst, muß Du den Befehl unshift verwenden:

unshift(@tiere, "Gorilla");  # fügt Gorilla an den Anfang der Liste an

Wenn Du das erste Array-Element entfernen willst, benutzt Du den shift Befehl:

shift(@tiere);   # entfernt das erste Listen-Element
Perl Einführung: Kurzschreibweise von Operationen zurückInhaltvorwärts