Sven Rautenberg: Dynamisches Zusammenstellen von RegExps

Beitrag lesen

Aloha!

Dazu macht das Programm vereinfacht ca. folgendes:

while ($content =~ "m/<[Pp]>".$wort.".*?\n/s") {print $1;}

Letztere Zeile funktioniert aber irgendwie mal gar nicht, auch nicht vereinfacht... brauche ich ein eval oder sowas?

Mein Perl-Tutorial sagt im Zusammenhang mit der RegEx-Option "o" (compile once), dass folgender RegEx korrekt ist:

while ($content =~ m/<[Pp]>($wort).*?$/m) {print $1;}

s (single line) würde ich nicht unbedingt wählen wollen, bzw. nicht allein wählen wollen, denn m (multiple line) ist viel schöner, um mit dem Zeilenende $ auch mitten im Text Zeilenumbrüche zu finden.

Die Option o würde den RegEx nur beim ersten Mal kompilieren - die Variable $wort könnte sich danach ändern, ohne Wirkung zu zeigen. Erhöht die Performance, kann aber stören.

- Sven Rautenberg