CGI 5 - Arrays
|
  
Sie
wissen nun wie man ein einfaches Skript schreibt und darin Variablen
nutzen kann. Interessanter wird das ganze bei Variablenfeldern
- Sogenannten Arrays.
Unterkapitelindex
5.1 Was sind Arrays überhaupt?
5.2 Allgemeines zu Arrays
5.3 Zugriff auf Arrays
5.4 Array Funktionen
5.5 Beispiel
|
|
5.1
Was sind Arrays überhaupt?
Einfach ausgedrückt sind Arrays Felder von Skalaren Variablen
.
Also zb. 20 Variablen in einer Liste. Das ist sehr nützlich
wenn es zb. darum geht eine Adressdatenbank aufzubauen. Statt die
Variablen my $name1, my $name2 usw. zu deklarieren nutzt man einfach
"@namen[10]" um 11 Namen im Feld speichern zu können. |
|
5.2
Allgemeines zu Arrays
Wie schon in 5.1 beschrieben sind Arrays eine Liste (bzw. ein Feld)
skalarer Variablen.
Die Arrays müssen natürlich auch zuerst definiert werden,
das geschieht mit dem Befehl
Dabei bedeutet das "My" das die Variable lokal deklariert
wird. Das At (@) Zeichen definiert die Variable als Array aus Skalaren.
Es wurde dabei keine bestimmte Zahl von Skalaren definiert. |
|
5.3
Rechnungen
Der Zugriff auf Arrays ist recht einfach:
|
01
02
03
04
05
06
|
my @array;
push (@array, "Wohnung");
push (@array, "Haus");
print $array[1];
|
In diesem Beispiel sehen
Sie gleichzeitig auch die Möglichkeit einem Array einen Wert
anzuhängen. Was denken Sie wird die 6. Zeile ausgeben? Falls
Sie nun denken Wohnung ist das zwar logisch, aber leider falsch.
Denn der erste Skalar in einem Array hat nicht die Nummer 1, sondern
0. Also wird in diesem Beispiel "Haus" ausgegeben.
Um auf den Array zuzugreifen
wird nicht das @-Symbol, sondern das $-Zeichen genutzt!
Rechnungen mit Arrays sind auch sehr einfach durchzuführen:
|
01
02
03
04
|
my @array=(1, 2, 3);
my $c = $array[0] + $array[1] + $array[2];
print "1+2+3 = $c";
|
In diesem Beispiel wurde
der Array gleich mit Werten deklariert. Das ist durch das trennen
mit dem Komma (,) Zeichen möglich. Danach wird $c der Wert
1+2+3 = 6 zugewiesen und ausgegeben. Natürlich sind - genau
wie bei den Skalaren - auch alle anderen Rechenarten möglich. |
|
|
5.4
Array Funktionen
Mit der
Funktion "push" können Sie einem Array einen weiteren
Wert hinten anhängen.
|
01
|
push (@array, "test");
|
Mit der Funktion "unshift"
können Sie einem Array einen weiteren Wert vorne anhängen.
|
01
|
unshift (@array, "test");
|
Mit der Funktion "pop"
entfernen Sie den letzten Wert eines Arrays.
|
01
02
03
04
05
|
push (@array, "test");
push (@array, "test2");
pop (@array);
print $array[1]; # Ausgabe ist "" da das letzte
Element entfernt wurde.
|
Mit der Funktion "shift"
entfernen Sie den ersten Wert eines Arrays.
|
01
02
03
04
05
|
push (@array, "test");
push (@array, "test2");
shift (@array);
print $array[0]; # Ausgabe ist "test2" da das
erste Element entfernt wurde.
|
Der Index "-1"
gibt das letzte Element zurück, "-2" das vorletzte
usw.
|
01
02
03
04
|
push (@array, "test");
push (@array, "test2");
print $array[-1]; # Ausgabe ist "test2"
|
|
|
5.5
Beispiel
Hier ein
kleines Beispielprojekt das verdeutlicht wie Arrays nutzbar sind:
|
|
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
#!/usr/bin/perl -wT
use strict;
print <<"EOF";
Content-Type:text/html
<html>
<head><title>Rechner</title></head>
<body>
EOF
my @array;
my @array2;
my $c;
push (@array, "Auto");
push (@array, "Motorrad");
push (@array, "Flugzeug");
unshift (@array, "fuhr");
pop (@array);
push (@array2, 12);
unshift (@array2, 8);
$c = @array2[0] * @array2[1];
print "Ich $array[0] mit dem @array[1] an einem @array[2]
mit $c km/h vorbei.";
print "</body>\n</html>";
|
Das Programm sollte
soweit klar sein, es wurden keine neuen Befehle verwendet. Falls
trotzdem Probleme auftreten sollten kontaktieren Sie mich bitte
per E-Mail. Als kleine Übung überlegen Sie sich vorher
was das Programm ausgeben wird.
 
|
|