opi: Unterschied zwischen for und foreach

Beitrag lesen

Hallo zusammen,

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

Bisher bin ich immer davon ausgegangen, dass eine for-Schleife nur
dazu genutzt wird, um einen Zähler in der Bedingung zu nutzen und
eine foreach-Schleife, um Elemente eines Arrays zu modifizieren.

"Eine Modifikation der Schleifenvariable führt also zu einer
Modifikation des ursprünglichen Arrays."

Ich bin immer davon ausgegangen, das beide Schleifen etwas können,
was die Andere nicht kann - also bezüglich Zähler und Modifikation.
Nun komme ich ein wenig durcheinander. Ich möchte das gerne mal mit
einem Beispiel zeigen:

  
my @array;  
  
push @array, "foo";  
push @array, "foo";  
push @array, "foo";  
  
# for modifiziert das Array  
  
s/foo/bar/ for @array;  
print "$_\n" for @array;  
  
# foreach hat einen Zähler  
  
foreach ( my $i = 0 ; $i <= 10 ; $i++ ) {  
   print "$i\n";  
}  

Ebenso habe ich mittlerweile sehr oft gesehen, dass für das Durch-
laufen von Hashes eine for- statt einer foreach-Schleife genutzt
wird. Gibt es hierfür einen besonderen Grund oder eine Faustregel,
wann ganz speziell welche Schleife genutzt werden sollte oder sogar
genutzt werden muss?

Oder ist die for-Schleife nur ein Trostpflaster für die
C-Programmierer? :-)

Bislang habe ich ganz strickt das Schema verfolgt:

for für Zählschleifen
foreach zum Durchlaufen von Arrays und Hashes

und nü weiß ich net mehr was richtiger ist ... *URGS* :-)

Greez,
opi

--
Selfcode: ie:( fl:( br:^ va:) ls:] fo:) rl:( n4:? ss:| de:] ch:? mo:|