attheo Geschrieben 17. April 2002 Teilen Geschrieben 17. April 2002 hi leute, ich habe ein perl-skript, dass ne text datei ausliest und die daten, die hinter dem ": " stehen in die jeweilige variablen schreibt, so sollte "$seite=1" sein. Ist es aber nicht, sondern "1 ", also mit nem leerzeichen dahinter. Also hab ich "$seite=~s/ //g if($seite=~/ /);" in die nächste zeile geschrieben.. dies ändert jedoch auch nichts.. wisst ihr wo das problem liegt?? kann es sein, dass das return in der textdatei mit ausgelesen wird? das probier ich gleich nochmal aus.. wenn das nicht geht, weiß ich nicht mehr weiter.. gruß attheo p.s. Inhalt der text datei: seite: 1 titel: Meine_Seite Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
dr.disk Geschrieben 17. April 2002 Teilen Geschrieben 17. April 2002 $seite=~s/ //g if($seite=~/ /); Dann zerpflücken wir das Ding mal: In allen Zeilen in denen ein Leerzeichen vorkommt werden Sie entfernt. Was Du wolltest ist aber wohl: open FH, "< datei"; while <FH> { print "$1\n" if m/: (.*)/o; } close FH; Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
attheo Geschrieben 17. April 2002 Autor Teilen Geschrieben 17. April 2002 habs hingekriegt!! hätte einfach nur anstatt $seite=~s/ //g if($seite=~/ /); $seite=~s/\s//g; nehmen müssen.. @dr.disk: würde mich aber trotzdem interessieren was genau in deiner lösung gemacht wird. " while <FH> {print "$1\n" if m/: (.*)/o; }" ich kenn nur @inhalt=<FH>; was macht den while? zeilenweise? was war nochmal $1? und den kommpletten if-zweig versteh ich auch nicht :-( klär mich bitte auf Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
dr.disk Geschrieben 17. April 2002 Teilen Geschrieben 17. April 2002 Hier nochmals der Code: while <FH> { print "$1\n" if m/: (.*)/o; } Also dann mal los: while <FH> liest die Datei Zeilenweise ein, da nirgend steht in welche Variable wird bei Perl $_ genommen. Wenn Du $_ nicht kennst: Buch oder manpage lesen - mit der kann man wunderhübsche Sachen machen. m/: (.*)/o ist Patternmatching, also wahr sobald der Ausdruck paßt. Ich suche nach einem :, gefolgt von einem Leerzeichen und danach alles was noch kommt. Punkt steht für ein beliebiges Zeichen, * für beliebig oft. Die Klammern weisen den Teil auf den der Ausdruck zwischen ihnen paßt einer Variablen zu, nämlich $#, wobei # für die Nummer des Klammernpaares steht. Ich hab nur eine Klammer, deswegen heißt die bei mir $1. Jetzt dürfte auch das print klar sein: gib $1 und ein newline aus, aber nur dann wenn das Patternmatching erfolgreich, also true war. Das o nach dem Patternmatching steht für optimize, damit wird die RegEx kompiliert. Vorteil: sobald ich Sie nochmals brauche geht's schneller. Nachteil: sollten da Variablen drin stehen werden Änderungen an diesen ignoriert. Hoffe mal, die Erklärung hilft weiter. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
attheo Geschrieben 17. April 2002 Autor Teilen Geschrieben 17. April 2002 vielen dank!! weiß jetzt bescheid.. gruß attheo Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
dr.disk Geschrieben 17. April 2002 Teilen Geschrieben 17. April 2002 Das hört man doch gern. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.