Thread Quellcodeverarbeitung mit Perl (10 answers)
Opened by Haselnuss992 at 2018-06-28 16:31

Linuxer
 2018-06-28 17:21
#188578 #188578
User since
2006-01-27
3881 Artikel
HausmeisterIn

user image
Willkommen.

Da Du um Verbesserungsvorschläge gebeten hast:

- Vermeide "Bareword" Filehandles, vor allem generische mit Allerweltsnamen wie FILE, nutze besser lexikalische Filehandles (Variablen mit my deklariert)
- und verwende am Besten die 3-Argument-Form des open(), d.h. trenne den Modus vom Dateinamen
- lass Dir beim Fehler am besten auch gleich die Systemmeldung (in $!) ausgeben

Zusammengefasst:

Code (perl): (dl )
1
2
3
4
5
6
open my $fh, '<', $filename  
  or die "open($filename, ro) failed: $!";
while ( my $line = <$fh> ) {
...
}
close $fh;


Zur Aufgabe:
Eigentlich ist HTML nicht regulär genug, um es sauber mit Regex zu parsen.
Zum Extrahieren einzelner Punkte kann es noch gut gehen. Ist immer ein Abwägen zwischen "Was will man", "Wie zuverlässig sind die Daten?" und "Wie zuverlässig will man es?".
Wenn man das im Hinterkopf behält, kann man es versuchen; oder wenn es mehr wird, gleich auf einen richtigen Parser zurück greifen.

ungetesteter Vorschlag (ohne Parser, mit Regex)
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
open my $fh, '<', $filename  
  or die "open($filename, ro) failed: $!";
while ( my $line = <$fh> ) {

    if ( $line =~ m/<tt>([^<]+)</tt> ) {
        print "Match: $1\n";
    }
}
close $fh;



Das genauere Verarbeiten (vom Treffer in $1) musst Du dann entsprechend selber einbauen.
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!

View full thread Quellcodeverarbeitung mit Perl