Vinzenz Mai: Unterschied zwischen for und foreach

Beitrag lesen

Hallo Opi,

kann mir jemand den genauen Unterschied zwischen einer for- und einer
foreach-Schleife erklären?

Laut dem Kamelbuch (Programmieren mit Perl, Larry Wall, Tom Christiansen & Randal Schwartz, O'Reilly-Verlag) erwartet die for-Schleife drei Ausdrücke innerhalb der Klammern der Schleife: Einen Ausdruck, der den Anfangszustand der Schleifenvariable bestimmt, eine Bedingung, die die Schleifenvariable prüft, und einen Ausdruck, der den Zustand der Schleifenvariable verändert. [...]

foreach wird genutzt, um den gleichen Code für jedes Element einer bekannten Menge von Skalaren, etwa eines Arrays, auszuführen ...
Bei jeder foreach-Anweisung wird der in Klammern stehende Ausdruck so evaluiert, dass er eine Liste erzeugt. Dann wird die Schleifenvariable nacheinander zu einem Synonym für jedes Element der Liste gemacht, und der Codeblock wird für jedes Element einmal ausgeführt...

Eine Konstruktion, die Ihnen häufig begenen wird, ist die Schleife über die sortierten Schlüssel eines Hashes:

foreach $key (sort keys %hash) {

...

Jetzt etwas klarer? Dein seltsames foreach-Beispiel verstehe ich überhaupt nicht. Wer wird so etwas wollen? Das ist eine Vergewaltigung von foreach.

Freundliche Grüße

Vinzenz