Array
Variablen
Eine weitere Art von Variablen sind die Array
Variablen. Sie stellen eine Liste von skalaren Variablen dar (ie.
Zahlen und Strings). Die Namen von Array-Variablen haben dasselbe Format,
wie die skalaren Variablen, ausser das sie anstelle eines $-Symbols,
am Anfang ein @-Symbol brauchen. Beispiel:
@food = ('apples', 'pears', 'eels');
@music = ('whistle', 'flute');
Damit werden der Variablen @food eine Liste von drei Elementen, der Liste @music eine
Liste von zwei Elementen zugewiesen.
Die Array-Elemente werden mittels Indizes in eckigen Klammern zugegriffen. Der Index
beginnt bei 0. Der Wert von
$food[2]
ist somit eels. Beachte, dass nicht mehr @, sondern $ am Anfang
des Variablennamens steht. Ein Element eines Arrays ist ein Skalar!
Array Zuweisung
Wie alles in Perl kann der gleiche Ausdruck in unterschiedlichem Kontext ein anderes
Resultat erzeugen. Die erste Zuweisung unten ergänzt den Array @music. Somit sind beide
Zuweisungen äquivalent.
@moremusic = ('organ', @music, 'harp');
@moremusic = ('organ', 'whistle', 'flute', 'harp');
Damit können Elemente zu einem Array hinzugefügt werden. Ein anderer Weg um Elemente
hinzuzufügen sieht folgendermassen aus:
push(@food, 'eggs');
Damit wird das Element eggs ans Ende des Arrays @food angehängt. Man kann auch
mehrere Elemente auf's Mal anhängen:
push(@food, 'eggs', 'lard');
push(@food, ('eggs', 'lard'));
push(@food, @morefood);
Die push-Funktion
hat als Rückgabewert die neue Länge des Arrays.
Analog kann mit pop das letzte Element von einer Liste entfernt werden.
pop entfernt von der
ursprünglichen Liste @food das letzte Element eels. Der Rückgabewert
ist das entfernte Element. @food hat nun noch zwei Elemente:
$grub = pop(@food); # Jetzt ist $grub = 'eels' (grub=Frass)
Es ist auch möglich, einem Array eine skalare Variable zuzuordnen. Wie immer ist der
Kontext wichtig. Die Zeile
$f = @food;
weist $f die Länge des Arrays $food zu. Hingegen wird mit
$f = "@food";
die Liste in einen String konvertiert, welcher zwischen den Elementen
je ein Leerzeichen hat. Mit der Spezialvariablen $"
kann das Leerzeichen durch einen beliebigen anderen String ersetzt werden.
Diese Variable ist eine von vielen Spezialvariablen,
mit welchen das Verhalten von Perl gesteuert werden kann.
Arrays können auch verwendet werden, um gleichzeitig mehrere Zuordnungen von skalaren
Variablen zu machen:
($a, $b) = ($c, $d); # Aequvalent $a=$c; $b=$d;
($a, $b) = @food; # $a und $b sind die ersten
# beiden Elemente von @food.
($a, @somefood) = @food; # $a ist das erste El. von @food
# @somefood sind die übrigen
(@somefood, $a) = @food; # @somefood ist @food und
# $a ist nicht definiert.
Zur letzten Zuweisung ist zu bemerken, dass Arrays alle Elemente, welche sie antreffen,
kopieren werden. Damit ist diese letzte Form nicht sehr nützlich.
Zum Schluss möchten wir noch die Länge eines Arrays bestimmen können. Der Ausdruck
$#food
ergibt den Index des letzten Elementes eines Arrays. Sofern wir mit dem
Index 0 begonnen haben (Achtung: Spezialvariable
$[) wird die Länge von @food:
$len=$#food+1;
oder im allgemeinen:
$len=$#food+1-$[;
Arrays ausgeben
Weil der Kontext wichtig ist, ist es nicht erstaunlich, dass die folgenden Ausdrücke
alle unterschiedliche Resultate erzeugen:
print @food; #
print "@food"; # mit doppelten Anführungszeichen
print @food.""; # in skalarem Kontext (. Konkat.)
Uebung
Wir probieren die obigen print-Statements aus und schauen, was dabei herauskommt. Man
darf es sich auch vorher überlegen!
 
|