Jörk Behrends: Wieso ist dieser Array leer?

Beitrag lesen

Hallo Cruz!

split lines into arrays

$l=0;
foreach $line (@lines) {

Die Elemente von @lines werden nach und nach $line zugewiesen. Änderungen an $line ändern die Elemente im Array !!!
Das folgende chomp zum Beispiel.

chomp($line);

»»  $i=0;
»»  for ($i=0;$i<$columns;$i++) {
»»  (${$headers[$i]}[$l],$line)=split(/\t/,$line,2);

Hier wird nach und nach $line an den Tabulatoren aufgetrennt. Immer ein Element in das Array für die entsprechende Spalte und der Rest wieder nach $line. So wird $line Stück für Stück kürzer - bis es schließlich leer ist!!!

»»  }

$l++;
} # end foreach @lines
Und siehe da... @lines ist nach diesem Algorithmus leer! $test enthält jede Menge

»»  s, also ist @lines immer noch ein langes Array, aber wo sind die Inhalte hingekommen?

Wie gesagt, Stück für Stück gelöscht. Die Inhalte liegen nun in Arrays. Das Array @headers enthält pro Spalte ein Array. Dieses Spalten-Array enthält wiederum für jede Zeile ein Element ...

Auf der Suche nach einer Antwort

Ich hoffe, daß Du jetzt fündig geworden bist ;-)

Jörk