Die Syntax der regulären Ausdrücke in Deinem Code ist falsch — lies am besten mal
perlretut und
perlre.
Generell würde ich reguläre Ausdrücke für Textersetzungen vor allem dann empfehlen, wenn der zu ersetzende Text oder Teile davon bekannt sind, aber nicht wo er steht. Zum Beispiel ersetzt
'Hallo sonstwer!' =~ s/\b\w+wer\b/Welt/r
das erste Wort, das auf
'wer' endet durch
'Welt' und gibt
'Hallo Welt!' zurück. Derselbe reguläre Ausdruck würde auch noch mit
'Hallo irgendwer.' oder
'Bis bald sonstwer. Mach's gut!' auf der linken Seite analog funktionieren.
Wenn man hingegen genau weiß, wo Text in einer Zeichenkette steht, aber nicht unbedingt weiß, was dort steht, dann sollte man tendenziell eher indexbasierte Zugriffsmethoden verwenden, insbesondere ist hier natürlich
perlfunc substr zu nennen. Zum Beispiel gibt
my $msg = 'Hallo X!';
substr($msg, 6, 1) = 'Welt';
say $msg;
den Text
Hallo Welt! aus.
When C++ is your hammer, every problem looks like your thumb.