Hallo Patrick!
Möchte Dich nicht in Deiner Ruhe stören, erwarte eine mögliche Antwort daher erst ab Montag.
Es gibt die vordefinierten Variablen Prematch und Postmatch (Link hast Du in Deinem Posting zu $#name erhalten). Die zu nutzen ist aber eine erhebliche Geschwindigkeitsbremse.
Trotz der Warnung habe ich es einmal damit versucht - und es funktioniert
fast!
my $times = 5;
my $var = "XYZ";
my $ersatz = "123456";
my $pat = qr/(?<!$var)(?:$var){$times}(?!$var)/;
my $text = "aaaXYZXYZXYZXYZXYZbbb";
$text =~ s/$pat/$`$ersatz$'/g;
print "Text-neu: $text<br>"; # <=== Text-neu: aaaaaa123456bbbbbb
print "*$`* *$'*<br>"; # <=== *aaa* *bbb*
Das heißt $` und $' sind richtig gefüllt.
Warum aber erscheint deren Inhalt in der Ersetzung doppelt?
Vermutlich mein letzter Beitrag für heute!
Gruß
Gerd