Thread Zwei Dateien auslesen (8 answers)
Opened by azib at 2015-10-29 16:17

Raubtier
 2015-10-29 23:23
#182739 #182739
User since
2012-05-04
1056 Artikel
BenutzerIn

user image
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)

View full thread Zwei Dateien auslesen