Thread Daten auslesen und mit Hash in andere Datei eintragen lassen
(14 answers)
Opened by J0ke at 2016-04-14 10:27
Hallo,
vorab drei Tipps:
Dann zu Deinen eigentlichen Problemen: Zeile 11: <DATEI> wird hier im skalaren Kontext ausgewertet, d.h. eine Zeile aus der Datei wird ausgelesen - und weggeworfen, weil Du das Ergebnis nicht speicherst. Du willst hier while (my $line = <$datei>) {...} Zeile 12: Da überschreibst Du für jeden Schleifendurchlauf den kompletten Hash %rolle. Beim Code für die Ausgabe ab Zeile 19 kommen also nur die Werte an, die Du im letzten Schleifendurchlauf ausgelesen hast. Mit %rolle = split m/;/, $line,7; wäre das die letzte Zeile - und die extrem verhackstückt, denn split spaltet die Zeile in eine Liste der einzelnen Felder auf und die wird dann in einen Hash gewandelt, nach dem Muster (key0, value0, key1, value1,...) Du bekommst dann z.B. d.h. 102, 4049 und 12060 sind Keys. Aber halt, Du verwendest in der Argumentenliste von split taucht bei Dir <DATEI> auf. D.h. das wird im List-Kontext ausgewertet. Dann werden alle verbleibenen Zeilen auf einen Schlag ausgelsene und als Argumente von split verwendet. D.h. nur die 2. Zeile Deiner Eingabedatei wird gesplittet (die 1. hast Du ja schon beim while weggeworfen), die 3. wird als Limit für split verwendet und der Rest wird wieder weggeworfen. Deine While-Schleife wird auch nur einmal durchlaufen. |