请看下面的例子:
my $text = "some_strange_thing";
$text =~ s/some_(\w+)_thing/no_$1_stuff/;
print "Result: $text\n";
它打印输出
“结果:no_strange_stuff”
到目前为止一切顺利。
现在,我需要从外部来源(用户输入、配置文件等)获取匹配和替换模式。一个朴素的解决方案看起来像这样:
my $match = "some_(\\w+)_thing";
my $repl = "no_\$1_stuff";
my $text = "some_strange_thing";
$text =~ s/$match/$repl/;
print "Result: $text\n";
然而:
"结果:没有$1的东西"。
出了什么问题?我如何使用外部提供的模式获得相同的结果?
$repl
中使用了转义符$
?试试这个:my $repl = "no_$1_stuff";
。 - Vlad DXno__stuff
。 - Daniel Martin