Hi Sven!
Von den Backslashes her gesehen kommt in Perl alles so an, wie ich es denke, dass es gut ist. Und die runden Klammern sind auch nicht das Problem - die funktionieren scheinbar, denn es wird die gesamte <h3>...</h3> ersetzt. Nur eben nicht durch <p><strong>...alte Überschrift...</strong></p>, sondern durch <p><strong>$1</strong></p>.
Ich kann mir nicht vorstellen das Du da Erfolg haben wirst, denn wenn das ginge, das Du einem PERL-Script echten PERL-Code übergeben könntest, dann wäre ja absolut gar nichts mehr sicher.
Wenn man das ganze mal auf das Kernproblem reduziert(zumindest soweit ich das einschätzen kann), dann müßte man erstmal folgends Scritp ans laufen bekommen:
#!/usr/bin/perl
$a="Hat geklappt!";
$b=$ARGV[0];
print "b:";
print $b;
print "\n";
Wenn Du jetzt das Script mit "scriptname.pl $a" startest, das wäre ja vergleichbar mit dem was Du da versucht hast. Wenn es "funktionieren Würde müßte als Ausgabe der Variable $a rauskommen, aber ich glaueb nicht das das klappt, ich jedenfalls habe es nicht geschafft. Die einzige Möglichkeit die mir eingefallen wäre ist eval. Du könntest Deinen searchstring im Script noch selbst parsen, also bei jedem /$\w+/ oder so ähnlich zerteilen, den/die ausgeschnittenen Teil(e) durch eval schicken und danach wieder zusammensetzen. Aber vielleicht zählt das ja auch nicht für RegEx, da gelten ja durchaus eigene Gesetze, habe sonst keine Ahnung.
Viele Grüße
Andreas