Ich hatte mal das Problem, daß ich in einem regulären Ausdruck zusätzlich Code ausführen mußte (wollte).
Also, flugs im perlretut nachgelesen, alles auf Englisch gefunden, Hälfte verstanden und dann lang herumprobiert, denn im perlretut steht, daß es prinzipiell funktionieren müßte.
Also, mal so zum Testen, folgende Problemstellung:
Man hat ein Skalar "Farbe Rot Farbe Grün Farbe Gelb Farbe Blau".
Man möchte jetzt jedesmal das Wort Farbe nummerieren, beginnend mit 1.
Und warum ist das so?
Also, im perlretut steht, grob übersetzt, daß das e hinter dem letzten / dafür sorgt, daß der Teil, der für das Ersetzen zuständig ist, wie ein eval() behandelt wird.
Es wird also Farbe gefunden, in $1 gespeichert, dann eval($1.$counter++), also $counter erhöht und zu Farbe1, und schließlich das Original Farbe ersetzt.
Das g hinter dem letzten / gibt an, daß diese Prozedur global, also für alle Elemente, durchgeführt wird. Ohne das g wäre nur das erste Farbe ersetzt worden.
Alles etwas hardcore, aber ich hoffe, das Beispiel war verständlich...
Kommentare zum Beitrag "Perl-Code ausführen in einer Regular Expression"
Kommentar von Bernd
REs sind einfach super. Danke für die verständliche Schreibweise.
Der Link am Ende des Eintrags ist jedoch fehlerhaft "Ein kleines weiteres Beispiel gibts ...". Ich glaube, das trifft auf andere Beiträge auch zu. Und ich meine, ich habe auch schon die Ursache hierfür gelesen, in Bezug auf "print" ;-)
Kommentar von Admin
Danke für den Hinweis.
Ich hab die Ersetzroutine nun auch komplett neu gemacht, ich denke mal, so sollte es nun laufen.
Kommentar von herbi19
Tolle Beispiele zum Üben - vielen Dank!
Im Farb-perl muss es aber /ge heißen, sonst klappt das nicht