Cruz: Wieso ist dieser Array leer?

Beitrag lesen

Ist aber @lines wirklich leer, liegt der Fehler wohl woanders. Dann solltest Du vielleicht noch etwas mehr vom Source posten. @headers und $columns werden naemlich nirgendwo initialisiert.

Hallo Calocybe,

Ich habe es gründlich durchgetestet, der Array wird auf jeden Fall in diesem Block leer:

split lines into arrays

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

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

$l++;
} # end foreach @lines

Wenn ich $test=join("<br>",@lines); genau vor dem Block einsetze, erhalte ich die komplette Datenbank, wie erwünscht. Aber wenn ich es direkt nach dem Block einsetze, dann enthält @lines nur noch leere trings.
$headers und $columns werden natürlich vorher initialisiert.
Was ich hier absolut nicht verstehe ist, daß dieser Block keinerlei Anweisung enthält, die die Elemente von @lines irgendwie verändern könnte. Eine Zuweisung zu $line in der foreach Schleife hat doch keinen Einfluss auf die Elemente.....oder?

$x=$y bewirkt ja auch nicht, das $y danach leer ist.

Gruß
Cruz