Thread Regex-Muster als Variable: Dezimalpunkt ersetzen (9 answers)
Opened by qwe123qwe at 2020-12-25 11:41

qwe123qwe
 2020-12-25 11:41
#193023 #193023
User since
2013-10-08
65 Artikel
BenutzerIn
[default_avatar]
Hallo !
Über die Feiertage versuch ich ein kleines Skript zu schreiben, das mir aus einer Html-Seite ein paar Zahlen ausliest.

Im Prizip mach ich das derzeit so, daß ich ein Muster definiere
Code (perl): (dl )
$muster = "(\\d{2})\\.(\\d{2})\\.(\\d{2}).+?font-size-14.+?(\\d+\\.\\d+,\\d+|\\d+\\.\\d+|\\d+,\\d+|\\d+).+?font-size-14.+?(\\d+\\.\\d+,\\d+|\\d+\\.\\d+|\\d+,\\d+|\\d+).+?font-size-14.+?(\\d+\\.\\d+,\\d+|\\d+\\.\\d+|\\d+,\\d+|\\d+).+?font-size-14.+?(\\d+\\.\\d+,\\d+|\\d+\\.\\d+|\\d+,\\d+|\\d+).+?font-size-14.right.+?(\\d+\\.\\d+\\.\\d+|\\d+\\.\\d+|\\d+).+?right...(\\d+,\\d+|\\d+).+?(M|T)";

und die Html-Seite nach dem Muster absuchen lasse
Code (perl): (dl )
        while ($seite =~ /$muster/g) {

das funktioniert auch soweit.
Bei bestimmten Zahlen möchte ich aber nach dem Auslesen die Dezimalpunkte entfernen (bzw. bei anderen zum Weiterrechnen das Komma durch einen Punkt ersetzen).
Etwas umständlich formuliert sieht das bei mir so aus:
Code (perl): (dl )
1
2
3
4
5
$daten[6] = "$8";
     my $mitpunkt = $daten[6];
     $mitpunkt =~ s/\.//g;
     $daten[6] = $mitpunkt;
$daten[7] = "$9";

Ich weiß, daß das auch kürzer geschrieben werden kann, aber so kann ich das Problem besser zeigen.
Mit den 3 eingerückten Zeilen bekomme ich nämlich jetzt die Fehlermeldung
Code: (dl )
Use of uninitialized value $9 in string at update-sonstige.pl line 129.

Soweit ich erkennen kann, funktioniert durch die Substitution die Mustererkennung im Rest der Seite nicht mehr.

Ich hab's auch schon mit einer Referenz \$daten[6] versucht, aber da bekomme ich die Fehlermeldung "reused reference"

Ich hoffe, mir kann da jemand einen Tipp geben. So wie's aussieht versteht ich da nicht, wie Perl die Variableninhalte zuweist.......

View full thread Regex-Muster als Variable: Dezimalpunkt ersetzen