Perl:传递正则表达式搜索并使用变量替换

and*_*l73 6 regex perl capture

我有一个Perl脚本,它读取正则表达式搜索并替换INI文件中的值.

这工作正常,直到我尝试使用捕获变量($ 1或\ 1).这些用$ 1或\ 1替换.

任何想法如何让这个捕获功能通过变量传递正则表达式位?示例代码(不使用ini文件)...

$test = "word1 word2 servername summary message";

$search = q((\S+)\s+(summary message));
$replace = q(GENERIC $4);

$test =~ s/$search/$replace/;
print $test;
Run Code Online (Sandbox Code Playgroud)

这导致......

word1 word2 GENERIC $4
Run Code Online (Sandbox Code Playgroud)

word1 word2 GENERIC summary message
Run Code Online (Sandbox Code Playgroud)

谢谢

Igo*_*bin 6

使用双重评估:

$search = q((\S+)\s+(summary message));
$replace = '"GENERIC $1"';

$test =~ s/$search/$replace/ee;
Run Code Online (Sandbox Code Playgroud)

注意在$replaceee结尾的双引号s///.