请考虑以下示例:
my $text = "some_strange_thing";
$text =~ s/some_(\w+)_thing/no_$1_stuff/;
print "Result: $text\n";
Run Code Online (Sandbox Code Playgroud)
它打印
"结果:没有奇怪的 _粮"
到现在为止还挺好.
现在,我需要从外部源(用户输入,配置文件等)获取匹配和替换模式.天真的解决方案似乎是这样的:
my $match = "some_(\\w+)_thing";
my $repl = "no_\$1_stuff";
my $text = "some_strange_thing";
$text =~ s/$match/$repl/;
print "Result: $text\n";
Run Code Online (Sandbox Code Playgroud)
然而:
"结果:no_ $ 1 _stuff".
怎么了?如何通过外部提供的模式获得相同的结果?