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:
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)
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!