[Dresden-pm] Vorkommen eines Elementes in einem String zählen
Andreas Kunert
akunert at main-rheiner.de
Mon Aug 8 06:52:20 PDT 2005
Hallo,
ich habe folgendes vor. (Sport-Tabellen)
Ein strukturierte Datei wird geliefert.
<block>
<ansetzung>
<heim>name</heim><gast>name</gast><result>ergebnis</result>
<heim>name</heim><gast>name</gast><result>ergebnis</result>
<heim>name</heim><gast>name</gast>
<heim>name</heim><gast>name</gast>
</ansetzung>
<tabelle>
<platz> ......
<tabelle>
Ich will nun in meiner DB speichern, wann ein Spieltag komplett ist,
damit ich auf die Spieltage verweisen kann.
Ich bekomme nach jedem Spieltag eine Datei geliefert.
Beispiel:
1. Bundesliga spielt Freitag, Samstag und Sonntag = 3 Dateien
Freitags fehlen die Daten der Samstags- und Sonntagsspiele. Erst Sonntag
sind alle da.
Sprich wenn in dem Block ansetzung alle Ergebnisse vorhanden sind, ist
der Spieltag abgeschlossen.
Ein Verweis von einem (abgeschlossenen) Spieltag auf einen anderen
erfolgt also nur, wenn alle Resultate vorhanden sind.
Nun die Frage. Wie kann ich mit Perl zählen, ob in dem Block ansetzung
zu jeder Ansetzung auch ein Ergebnis vorliegt. Das Beispiel oben zeigt
eine Datei, wie sie an einem unvollständigen Spieltag erzeugt wird.
Leider ist die Struktur der übergebenen Datei nicht so sauber, dass ich
zeilenweise das machen könnte.
Was ich suche ist eine Art matching, welches mir z.B. sagt, <heim> ist 9
mal vorhanden, resultat nur 3 mal => nicht abgeschlossener Spieltag
Gibts also so eine Art Zähler, wie oft ein Matching getroffen hat?
$artikel =~ /.*?<$heim_tag.*?>(.*?)<\/$heim_tag.*?>.*?/i zählt ja
scheinbar nicht, sondern sagt nur aus, ob ein Treffer da ist und weist
das dann $1 zu.
Jemand eine Idee?
Danke
Gruß Andreas