Thread Zwei Dateien auslesen
(8 answers)
Opened by azib at 2015-10-29 16:17
Die Ursache deines Problems ist, dass du den Scope deiner Variablen zu groß lässt. Es ist immer eine gute Idee, die Variable innerhalb des {...}-Blocks zu deklarieren, in dem sie gebraucht wird. Es ist schlecht, wenn du zu viele globale Variablen hast.
Im speziellen Fall betrifft das unter anderem @a und @b. In der oberen while-Schleife liest du über split in @a die Spalten ein und pushst dann $a[1] und $a[12] nach @neu1. Unten, wo du das Spiel mit @b machst, verwendest du aber trotzdem $a. Wenn du @a und @b nicht global deklariert hättest, sondern innerhalb der while-Schleife mit my @a = split... gearbeitet hättest, wäre der Fehler sofort aufgefallen. Zusätzlich noch zwei Tipps: - Du liest 2x eine Datei auf dieselbe Weise in ein Array ein. Mach eine Funktion daraus und rufe sie jeweils mit dem entsprechenden Dateinamen auf. - Die Namenswahl deiner Variablen ist nicht gut. Zunächst verwende ich a und b nur sehr ungerne, weil $a und $b Spezialvariablen beim Sortieren sind. Alternativvorschlag in diesem Fall: @cols oder @spalten oder ähnlich - irgendwas, das den Inhalt beschreibt. Und wenn du irgendwie anfangen musst, Variablen zu numerieren (wie @neu1 und @neu2), dann solltest du (sofern es sich nur um 2 oder allerhöchstens 3 Variablen handelt) bessere Namen finden oder (sofern es mehr sind) ein Array verwenden. Ach ja, und ALLE Hinweise aus hlubenows Posting vor mir beachten! Last edited: 2015-10-29 23:29:42 +0100 (CET) |