Thread Newbie: Tabelle einlesen mit regulären Ausdrücken: Tabelle einlesen mit regulären Ausdrück
(5 answers)
Opened by Gast at 2007-02-25 23:16
Hallo zusammen,
ich habe am WE mit der Perl-Programmierung begonnen und schon recht viel zustande gebracht. Jetzt habe ich aber gerade zwei Probleme beim Einlesen einer Datei, bei denen ich nicht weiterkomme: 1.) Ich will eine Datei mit 11 Spalten einlesen, die rechtsbündig formatiert sind. Als Trennzeichen dienen Leerzeichen. Die Werte der elf Spalten sollen in Variablen $vi abgelegt werden (i=1..11) Ein Split der Art: Code: (dl
)
($v1, $v2, $v3, $v4, $v5, $v6, $v7, $v8, $v9, $v10, $v11)) = split (/\s+/, $i); tut mit Ausnahme der ersten Spalte. Da die Tabelle rechtsbündig formatiert ist und insgesamt 5 Zeichen eine Spalte bilden kommt es vor, dass eine Zeile mit einem Leerzeichen oder einem anderen Zeichen beginnt. Wenn die Zeile mit einem Leerzeichen beginnt (wenn der Inhalt der ersten Spalte weniger als 5 Zeichen groß ist), dann ist $v1 leer und $v2 enthält den Wert, der eigentlich in $v1 stehen sollte. Der elfte Wert der Tabelle verschwindet dann :(. Mein Versuch mit regulären Ausdrücken: Code: (dl
)
($Zellnr, $v1, $v2, $v3, $v4, $v5, $v6, $v7, $v8, $ctab, $mate)= $i =~/(\S+)\s+(S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)/; läuft nicht: Use of uninitialized value in concatenation (.) or string Warum verstehe ich nicht ganz, wie kann ich einen solchen Typ Tabelle korrekt einlesen? Gibt es so etwas wie formatiertes Lesen ähnlich wie bein Schreiben mit write? 2.) Die Variable $v10 brauche ich eigentlich nicht, $v11 aber schon. Ich bekomme immer eine Warnung: Name "main::v10" used only once: possible typo. Wi eläde ich das? Danke BastiL |