Lib Martinez: Zeichenfeld wird zum Zahlenfeld

Hallo
mein Script liest eine CSV-Datei zeilenweise und baut mit Teilen der Ausgangsdatei ein neues CSV-File auf.
Dabei wird u.a. in einer Schleife aus jeder Zeile ein String in eine Variable gelesen und an anderer Stelle wieder eingepflanzt.
Die Variable ist als Zeichen-Variable definiert. Der Inhalt, den sie beim Lesen vorfindet, kann sowohl aus Zahlen wie auch aus Zeichen bestehen.
Nun das Problem:
Wenn die Variable beim ersten Durchlauf Zahlen bekommt, scheint sie sich als Zahlen-Variable zu verstehen. Erhält sie dann bei weiteren Durchläufen Strings, so erkennt sie die offenbar nicht, jedenfalls werden aus den Strings beim Schreiben in die Zieldatei nur noch Nullen.
Gibts da einen Weg?
Danke und Gruss,
Lib

  1. Halihallo Lib

    Die Variable ist als Zeichen-Variable definiert. Der Inhalt, den sie beim Lesen vorfindet, kann sowohl aus Zahlen wie auch aus Zeichen bestehen.

    Diesen Unterschied macht Perl nicht. Für Perl sind es Skalare. Wie
    diese behandelt werden hängt vom Kontext ab. Also bring uns den
    Kontext => Quellcode. (bitte nicht das ganze Script, sondern ein
    einfaches Beispiel an dem der Fehler reproduzierbar ist).

    Kleiner Tipp:
    $test = 'auiuer95';
    $test = $test + 5;

    gibt 5, da 'auiuer95' im nummerischen Kontext 0 wird.

    Divide and Conquer. Mach Debugausgaben über print und versuche das
    Problem einzugrenzen; rate niemals.

    Viele Grüsse

    Philipp

    1. Hallo Philipp

      Diesen Unterschied macht Perl nicht. Für Perl sind es Skalare. Wie
      diese behandelt werden hängt vom Kontext ab.

      Bin auch grad drauf gekommen. Das Ergebnis-CSV-File ist in Ordnung.
      Das Problem taucht erst auf, wenn ich es als Datenquelle in der Textverarbeitung einsetzen will. Muss also anderswo suchen.
      Nichts für ungut!
      Viele Grüsse
      Lib

      1. Problem gelöst:
        ich hänge einfach ein Leerzeichen davor, nicht super-elegant, aber alltagstauglich.
        Herzliche Grüse, Lib