perlunity.de - PERL | JAVASCRIPT | PHP | MySQL | APACHE



#!/COMMUNITY

Members: 5597
davon online: 1
weitere User: 1
Click for quality!



20.01.2018 / 08:14

Community-Member werden   |   Paßwort vergessen   |   OnlineMonitor (1) Wer ist online ... OnlineMonitor starten !
     

 

Home


PERLscripts


PHPscripts


JAVAscripts


Hilfreiches


Links2www


Newscenter


Community


Interna




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!



zurück Inhalt weiter






-
-