Matti Maekitalo: foreach kann Inhalt eines Arrays nicht mehr verarbeiten

Beitrag lesen

use Mosche;

@dummy=(1,2,3);
foreach(@dummy){
  &dateilesen;
}

Diese Konstruktion bewirkt, daß keine Kopie von den Elementen von @dummy angelegt wird, sondern die einzelnen Elemente direkt bearbeitet werden. Durch das iterieren über <FILE> (die while-Schleife) wird $_, also dein Array-Element, jeweils überschrieben. Außerdem ist $_ am Ende der while-Schleife leer (weil $_ damit ein falscher Ausdruck ist, der while beendet), und damit wird das aktuelle Array-Element leer sein. Abhilfe schafft ein
local $_ am Beginn der Prozedur dateilesen.

Noch etwas: Wenn du nicht wirklich weißt, was es bedeutet, dann rufe Prozeduren mit dateilesen() statt @dateilesen auf.

use Tschoe qw(Matti);

--
  Anyone who quotes me in their sig is an idiot. -- Rusty Russell.