
einem Array Werte zuweisen
die Anzahl der Elemente und das höchste Element
eines Arrays ermitteln
den Inhalt eines Arrays vollständig auslesen
auf einzelne Elemente eines Arrays zugreifen
einen Array spiegeln - reverse
die Elemente eines Arrays sortieren - sort
aus einem Array einen String generieren - join
aus einem Array ein Stück ausschneiden - splice
das erste bzw. das letzte Element eines Arrays
entfernen - shift/pop
einzelne Elemente oder ganze Arrays zu einem bestehenden
Array hinzufügen - push/unshift
Operationen mit den Elementen eines Arrays
ausführen - map
| einem
Array Werte zuweisen |
|
Nach folgendem Schema
kann man einem Array Werte zuweisen:
@melone=("Ich","und","du","Müllers","Kuh","Müllers","Esel","das","bist","du");
| die
Anzahl der Elemente und das höchste Element eines
Arrays ermitteln |
|
Wir haben also einen Array mit 10 Elementen,
wobei das höchste Element, nämlich "du" den Wert
$melone[9] hat. Das niedrigste Element "Ich" hat den Wert
$melone[0].
Sowohl das höchste Element als auch die Anzahl der Elemente
lassen sich ermitteln.
Die Anzahl der Elemente erhält man mit:
$kiwi=@melone;
Das ist zwar merkwürdig, aber $kiwi hat jetzt den Wert
10.
Das höchste Element des Arrays, also in diesem Falle
9 , erhält man über die Sondervariable $#melone
print $#melone;
| den
Inhalt eines Arrays vollständig auslesen |
|
Das Auslesen des Inhalts eines Arrays erfolgt
mit:
print @melone;
Damit hat man dann den ganzen Array auf dem Schirm.
Das ist aber in der Regel nicht das, was gewünscht wird.
| auf
einzelne Elemente eines Arrays zugreifen |
|
In der Regel will man auf die einzelnen Elementen
des Arrays zugreifen. In der Regel verwendet man zum Auslesen
eines Arrays eine foreach Schleife. Aus Gründen der Vollständigkeit
soll noch die, aus allen Programmiersprachen dieser Welt bekannte,
for Schleife vorgestellt werden:
for($i=0;$i<=$#melone;$i++)
{
print "$melone[$i] \n";
}
Perl wie auch
PHP bieten zum Auslesen von Arrays eine spezielle Schleife,
die foreach Schleife.
Die simpelste Version sieht so aus:
foreach(@melone)
{
print "$_\n";
}
Wenn
kein Wert angegeben wird, dann wird jedes einzelne Element
des Arrays an die Sondervariable $_ übergeben.
Die einzelnen Element können aber auch an eine Variable
übergeben werden. Das sieht dann so aus:
foreach $kiwi(@melone)
{
print "$kiwi\n";
}
Es gibt auch
die Möglichkeit, sich nur Teile eines Arrays zeigen zu
lassen.
$kiwi ist jetzt die Laufvariable. Sie läuft von 5 bis
9:
foreach $kiwi(5..$#melone)
{
print "$melone[$kiwi]\n";
}
Der Array kann
auch mit einer while Schleife durchlaufen werden:
while(<@melone>)
{
print $_;
} Was lernen wir? Es gibt viele Möglichkeiten,
Arrays zu "durchwühlen". Da alle verwendet werden, sollte
man sie mal gesehen haben. Zum Programmieren reicht allerdings
eine Möglichkeit.
| einen
Array spiegeln - reverse |
|
Reverse spiegelt einen Array nach dem
Motto "die letzten werden die ersten sein und die letzten
die ersten". Reverse braucht man z.B. bei der Programmierung
eines Gästebuchs, wenn man will, dass
die letzten Beiträge zuerst aufgeblendet werden.
Im folgenden Beispiel wird der Array @melone gespiegelt:
@enolem=reverse(@melone);
print @enolem;
| die
Elemente eines Arrays sortieren - sort |
|
Sort sortiert die Elemente des Arrays
alphabetisch:
@unsortiert=("Berlin","Amsterdam","Madrid","Brüssel","Freiburg","Rom","Milano");
@sortiert=sort(@unsortiert);
foreach $ordnung(@sortiert)
{
print "$ordnung \n";
}
| aus
einem Array einen String generieren - join |
|
Es kommt häufig vor, dass aus einem Array
ein String, also eine Zeichenkette, generiert werden soll.
Das macht der join Befehl. Die Syntax sieht so aus:
$ich_bin_der_string=join("ich_bin_der_Klebstoff",@ich_bin_der_zusammenzubackende_array);
$ich_bin_der_string=join(" und ", @sortiert);
print $ich_bin_der_string;
| aus
einem Array ein Stück ausschneiden - splice |
|
Mit splice kann aus einem Array ein Stück
ausgeschnitten werden.
Ein Beispiel, in dem der Befehl angewendet wird:
@ausschneiden=("Toll","Mit "," splice"," kann "," man "," Teile "," aus "," einem "," array ",
" ausschneiden ","Einfach","irre","!");
@ausgeschnitten=splice(@ausschneiden,1,9);
print @ausschneiden;
print @ausgeschnitten; Das
Beispiel liefert folgendes Ergebnis:
Für @auschneiden: TollEinfachirre!
Für @ausgeschnitten: Mit
splice kann man Teile auch einem array auschneiden
Die Funktion splice hat drei Parameter:
-
der Array, aus dem ausgeschnitten wird.
-
der Startpunkt, von dem aus ausgeschnitten
wird.
-
die Anzahl der Elemente, die ab dem Startpunkt
ausgeschnitten werden sollen, wobei der Startpunkt mitzählt.
Ausschneiden ist hier wörtlich zu nehmen.
Der ursprüngliche Array wird um den ausgeschnittenen
Teil reduziert.Zur Verdeutlichung noch ein Beispiel, bei dem
ein Element des Arrays ausgeschnitten wird:
@banane=("Maier","Müller","Schulze","Schmidt");
slice(@banane,1,1);
print @banane;
Ergebnis:
Der Müller ist jetzt
weg.
| das
erste bzw. das letzte Element eines Arrays entfernen -
shift/pop |
|
Die Funktion shift kommt oft vor in der Objektorientierten
Programmierung, weil hier das erste Element der übergebenen
Parameter der Zeiger auf das Objekt ist, der abgefangen werden
soll.
Das heißt shift entfernt das erste Element des
Arrays und übergibt dieses Element an eine Variable.
Pop agiert ähnlich. Es entfernt das letzte Element:
@ausschneiden=("Toll","Mit "," shift"," kann "," man "," Teile "," aus "," einem "," Array ",
" ausschneiden ","Einfach","irre","!");
$ausgeschnitten=shift(@ausschneiden);
print "@ausschneiden\n";
$ausgeschnitten=pop(@ausschneiden);
print "@ausschneiden\n";
Wie man sieht, hat sich Toll verabschiedet,
bzw. steckt in $ausgeschnitten.
In dem Beispiel oben eliminiert shift das Toll und pop
das Ausrufezeichen.
| einzelne
Elemente oder ganze Arrays zu einem bestehenden Array
hinzufügen - push/unshift |
|
Mit push und unshift kann man einzelne Elemente
oder ganze Arrays zu einem bestehenden Array hinzufügen.
Der Unterschied besteht darin, push fügt an das
Ende eines Arrays an, unshift ergänzt am Anfang.
@array1=(" Banane "," Himbeere "," Karotte ");
@array2=(" Gurke "," Tomate "," Rübe ");
push(@array1,@array2);
print "@array1 \n";
unshift(@array1,@array2);
print "@array1 \n";
| Operationen
mit den Elementen eines Arrays ausführen - map |
|
Mit map werden bestimmte Operationen
mit jedem Element eines Arrays ausgeführt. Das gleiche
kann man auch erreichen, wenn der Array eine foreach Schleife
durchläuft und jedes Element einzeln "verarztet wird".
Vielleicht ist map eleganter?
@rausschneiden=("Andres","Peter","Shokufeh","Yasemin","Maria","David");
@laenge=map(length($_),@rausschneiden);
foreach $kiwi(@laenge)
{
print "$kiwi \n";
}
Das
Programm gibt dann für jedes Element des Arrays (Andres,
Peter, Schokufeh, etc. ) die Länge aus (6,5,8,7 etc.).
Eine alternative Schreibweise ist:
@rausschneiden=("Andres","Peter","Shokufeh","Yasemin","Maria","David");
foreach (@rausschneiden)
{
push(@laenge,length($_));
}
foreach $kiwi(@laenge)
{
print "$kiwi \n";
}
|
 |