Thread String Matching einer Zeile (3 answers)
Opened by Gast at 2008-12-14 05:25

MatthiasW
 2008-12-14 13:48
#117214 #117214
User since
2008-01-27
367 Artikel
BenutzerIn
[default_avatar]
Hast du den Code irgendwo im Internet zusammengesucht?

1. Du solltest deinem Programm eine Shebang-Zeile hinzufügen.

2. $out1 hieße besser $in, da ja eingelesen und nicht - wie bei $out - geschrieben werden soll.

3. In deinem if-Statement versuchst du auf das Dateihandle $out1 einen RegEx zu matchen. Eigentlich möchtest du aber auf die jeweilige Zeile einen RegEx matchen, dazu musst du $out1 durch $_ ersetzen, oder $out1 und das =~ weglassen.

4. Einen RegEx definiert man durch m// (das / kannst du auch mit einem anderen Zeichen ersetzen, Klammern gehen auch). Benutzt man / als Trenner braucht man allerdings das m vorweg nicht mehr.

Innerhalb deines RegEx:
1. Anstelle von Leerzeichen, solltest du \s+ verwenden, weil du dir nicht sicher sein kannst wie viel Platz zwischen den Einträgen ist.

2. Die \d{1,3} sollten lieber \d+ heißen, schließlich kann es ja auch mal längere Zahlen geben.

3. \.\d* prüft auf einen Punkt, gefolgt von beliebig vielen Ziffern, das ist aber nicht was du möchtest. Du brauchst folgendes: (?:\.\d+)?

4. Wieso setzt du Slashes vor die runden Klammern?

edit: 5. Du solltest am Anfang und am Ende des RegEx einen Anker setzen: ^...$

MfG
perl -E'*==*",s;;%ENV=~m,..$,,$&+42;e,$==f;$"++for+ab..an;@"=qw,u t,,print+chr;sub f{split}say"@{=} me"'

View full thread String Matching einer Zeile