Hi, ich hab folgendes Problem:
In mehreren längeren Textdokumenten tauchen Namen auf, die
ersetzt werden sollen. Aber nur dann, wenn sie innerhalb des tags
<p class="txt4"> ... </p>
auftauchen.
Ansonsten sollen die Namen unverändert bleiben.
Innerhalb des tags <p class="txt4"> ... </p> können die Namen
keinmal, einmal oder auch mehrmals stehen.
Die einfache Ersetzungsfunktion
$text =~ s/$suchb/$ersatz/g;
geht nicht, weil $suchb in $text nur innerhalb der Zeichenkette
<p class="txt4">.*?</p>
ausgetauscht werden soll.
Bislang behelfe ich mich mit einer while-Schleife. Das funktioniert auch, aber es erscheint mir wenig elegant und auch zeitaufwändig:
while ($text =~ /<p class="txt4">.*?$suchbegriff.*?</p>/) {
$text =~ /<p class="txt4">(.*?)</p>/;
my $korr = $1;
$korr =~ s/$suchb/$ersatz/g;
$text =~ s/<p class="txt4">.*?$suchb.*?</p>/<p class="txt4">$korr</p>/;
}
Gibt es eine elegantere Lösung?