Hallo speedy,
[...]
s/##CMS:UNI:CGI:(\w+)##/$cgidata{$1}/go;
^^^^^^
Wenn in dem geklammerten Bereich eben bestimmte Strings vorkommen, soll die Substitution nicht ausgeführt werden.
[...]
Ich war leider zu faul, mir eine komplexe Lösung für die RegEx auszudenken ;-), habe aber eine einfache Version anzubieten *bg*
Verlager doch Dein Problem der Überprüfung ob ersetzt werden soll oder nicht von der linken Seite auf die rechte Seite.
untested:
s/blablabla(\w+)bla/&checkword($1,$&,%cgidata)/ge;
sub checkword {
my($word, $match, $cgidata) = @_;
return (($word eq "unwort1" $word eq "unwort2") ? $match : %{$cgidata{$word}});
}
Oder versuchs doch mit Deiner ursprünglichen Variante ;-)
untested:
s/##CMS:UNI:CGI:(wort1wort2wort3wort4)##/$cgidata{$1}/go;
Das könnte auch funktionieren, wobei ich allerdings die erste Version präferieren würde *g*
Gruß AlexBausW