foreach kann man übersetzen mit "für jedes", und damit wird auch schon klar, worum es sich handelt: Mit foreach geht man jedes Element eines Arrays nacheinander durch.
Syntax foreach (@liste){}
oder foreach (start..ende){}
oder foreachmy $laufvariable (@liste){}
oder foreachmy $laufvariable (start..ende){}
Es werden also alle Elemente nacheinander durchgegangen, bis das Ende erreicht ist. So weit, so gut.
Nun zu den Besonderheiten
Im obigen Beispiel wird das $_ verwendet. Der Übersichtlichkeit wegen möchte man aber vielleicht lieber einen richtigen Namen verwenden, also zum Beispiel $eintrag.
In $eintrag ist also immer das gerade aktuelle Element gespeichert. Diese Möglichkeit der Bestimmung des gerade aktiven Elements erhöht oftmals die lesbarkeit eines Scrites, so weit ich weiß ist es aber weder schneller noch langsamer.
Durchlauf abbrechen
Falls das gesuchte Element gefunden wurde man man den restlichen Durchlauf abbrechen möchte, geht dies mit last; .
Ausgabe:
Nur hans, da danach die Schleife verlassen wird.
Nächstes Element
Wenn man aus irgendeinem Grund mit dem aktuellen Element fertig ist und mit dem nächsten weiter machen möchte, kann man next; verwenden.
if ($sonstwas eq $eintrag){ redo;
} print "$eintrag ";
}
Kommentare zum Beitrag "foreach in Perl"
Kommentar von Guido Beckmann
Es haben sich einige Druckfehler eingeschlichen:
Mittels foreach iteriert man über arrays und nicht, wie in der Einleitung beschrieben, über hashes. Für Letzteres ist ein while each Konstrukt besser geeignet.
Im Absatz "Durchlauf abbrechen" gibt es im Code einen typischen Copypaste-Fehler.
Kommentar von Admin
Wollte nur gucken, ob alle schön aufpassen ...
Ne, aber mal im Ernst: Wenn man da manchmal so am Schreiben ist, sieht man den Wald vor lauter Bäumen nicht mehr.
Danke für die Hinweise!
Kommentar von Dirk
Hi,
ein weiterer Fehler:
>>Durchlauf abbrechen
Die Ausgabe ist nicht "Nur hans, da danach die Schleife verlassen wird."
Sondern Hans und Franz. Erst nach der Ausgabe wird überprüft ob die Schleife abgebrochen werden soll oder nicht.
MfG
Kommentar von Otmann
Tausend Dank für eure Hilfe, und für alle die, diese Website erstellst haben...
Tausend Grüß aus ffm