ein Kapitel zurück                                           ein Kapitel weiter

Nachdem wir uns bisher nur mit den skalaren Variablen beschäftigt haben kommen wir nun zu den Arrays. Viele die bereits Erfahrung mit z.B. C gemacht haben werden so manche Überraschungen erleben. Nach diesem Kapitel werden wohl die letzten Zweifel beseitigt sein das Perl unumstritten die beste Programmiersprache darstellt wenn es um Text geht.
Gerade Programmierer die in C/C++ programmieren werden einige Verständnisprobleme bekommen. Warum? Weil es oftmals zu einfach ist ;) 
Wo man in anderen Sprache eigene Routinen schreiben muss geht in Perl mit gerade einer Zeile. Selbst ich musste zu Beginn manche Abschnitte zweimal Lesen weil ich es mir nicht vorstellen konnte das es so simpel ist.

Wollen wir mit den Arrays von Zahlen beginnen. C-Programmierer definieren die Werte Ihres Arrays etwas so......


int werte[9] = { 1,2,3,4,5,6,7,8,9,10 };


Anmerkung für Anfänger : Computer beginnen bei 0 zu zählen da der Wert 0 für den Computer ebenso ein Darstellbarer Wert ist. Daher der Index [9] und 10 Zahlen. 0-9 sind ja auch 10 Zahlen. Dies gilt auch für Perl!!!

In Perl hat die Definition eines Arrays mit Zahlen folgendes Aussehen..........

@werte = (1,2,3,4,5,6,7,8,9,10);


Natürlich kann man diese Schreibweise mit dem Bereichsoperator abkürzen......


@wert = (1..10);


Dies entspricht der selben Wertdefinition wie zuvor.

Jetzt wollen wir uns doch mal ansehen wie wir die einzelnen Werte der Liste durchgehen können. Wenn sie einen einzelnen Wert in einem Array angeben wollen benötigen wir einen Index der auch bei Perl in eckige Klammern steht. Außerdem muss wenn man ein einzelnes Element der Liste ausgeben will das Präfix $ für Skalar an den Array-Namen hinzufügen. Hierzu nun ein Beispiel....

#!/usr/bin/perl -w

@werte = (1..20);

print "Es werden alle geraden Zahlen zwischen 1 und 20 ausgegeben\n";

for($i=1; $i < 20; $i++)
 {
   if($werte[$i]%2)
     {
       next;
     }
   print $werte[$i] , "\n";
 }


Wir definieren hier ein Array mit den Wert 1-20, durchlaufen eine Schleife von 1-20 und überprüfen ob die Zahl von $wert[$i]%2 einen Rest ergibt. Falls ja wird mit next  wieder an dem Schleifenanfang gesprungen, falls kein Rest herauskommt ist es eine gerade Zahl und wir geben sie aus.
Also nochmals, wenn sie auf eine einzelnes Element in einem Array zugreifen wollen  müssen sie $ für Skalar eingeben und den Indexwert in viereckigen Klammern.

Das ganze kann man natürlich auch mit der Standardvariable $_ bewältigen.......


#!/usr/bin/perl -w

@werte = (1..20);
$counter=0;

print "Es werden alle geraden Zahlen zwischen 1 und 20 ausgegeben\n";

foreach (@werte)     #Das Array @werte wird durchlaufen
 {
   if($_%2)                #Gerade Zahl?
     {
       next;                  #Nein
     }
   print $_ , "\n";        #Gerade Zahl ausgeben
   $_ = $counter++;    #Index des Arrays erhöhen
 }


Nun kennen sie eine Möglichkeit wie sie Array durchlaufen können und auf einzelnen  Elemente zugreifen können. Wie kann man aber nun herausfinden wie viele Werte sich tatsächlich in dem Array befinden? Sie werden überrascht sein...............


#!/usr/bin/perl -w

@werte = (11, 48, 23, 10, 33, 66);

$anzahl_werte = @werte;

print "\n", $anzahl_werte , "\n";


Und hierbei bekommen sie den Wert 6 zurück. Eine Weitere Möglichkeit stellt diese da....


#!/usr/bin/perl -w

@werte = (11, 48, 23, 10, 33, 66);

print "\n", $#werte+1 , "\n"#$#werte stellt den Index des letzten Wertes da
print $werte[$#werte], "\n";  #Hier der Beweis


Was sagt uns das nun wieder? Nun der höchste Index eines Array wird in der Variablen  $#werte festgehalten was uns die Ausgabe mittels....


print $werte[$#werte], "\n";


....auch beweist. Jetzt dürfte wohl auch klar sein wieso........

$anzahl_werte = @werte;


..die Anzahl der Elemente in dem Array zurückgibt. Intern kann man sich dies dann so  Vorstelle.............

$anzahl_werte = $#werte+1;


ein Kapitel zurück          nach oben           ein Kapitel weiter


© 2001,2002 Jürgen Wolf