<< Einleitung | Inhalt | spezielle Variablen >> |
for und foreach bei Arrays | Schleife statt Rekursion | while-Schleife und Rhombus-Operator |
Wird ein Array mit Hilfe einer for-Schleife durchlaufen, wobei auf die Elemente über die Indizes (z. B. @array[$i]) zugegriffen wird, dann muss Perl zuerst die Indizes auswerten und kann erst dann auf den Inhalt zugreifen. Mittels der foreach-Schleife wird einfach das Array durchlaufen. Wenn es also möglich ist ein Array über letztere Schleife zu durchlaufen, dann sollte man auf diese zurückgreifen. Ich hab's getestet - es stimmt - bemerkbar wird es aber erst, wenn man öfter darauf zurückgreift. Verwendet man in der foreach-Schleife $_ statt einer anderen Laufvariablen, dann wird es noch einmal etwas schneller.
Einen Fall haben wir schon kennengelernt - bei der Berechnung der Fakultät:
Besser und schneller (Faktor 3) ist:
Als nächstes sei hier eine Möglichkeit aufgezeigt, Files einzulesen. Man braucht dazu die while-Schleife und den Rhombus-Operator <>:
Dieses kurze Programm liest Files zeilenweise ein und gibt diese an die Standardausgabe aus. Welche Files - die, die man beim Programmaufruf mit übergibt (hier file1.txt, file2.txt und file3.txt):
Der Rhombus-Operator arbeitet das Array @ARGV ab! Während des Programms kann das Array @ARGV verändert werden - das ist aber nur in bestimmten Fällen ratsam - , um den Rhombus-Operator die geeigneten Filenamen zuzuspielen.
Der Rhombus-Operator kann auch in anderen Fällen eingesetzt werden - man muss nur wissen, dass dieser Operator eben die Files in @ARGV abarbeitet (das heißt aus dem Array @ARGV immer das erste Element ausliest und löscht.): Zum Beispiel ist folgendes möglich, um Zeilen (der Files aus @ARGV) sortiert auszugeben:
for und foreach bei Arrays | Schleife statt Rekursion | while-Schleife und Rhombus-Operator |
<< Einleitung | Inhalt | spezielle Variablen >> |
© 2001-2003 Perl, Lehrstuhl Mathe II, Uni Bayreuth |