我正在制作一个正则表达式构造函数。 但是在跑步时:
my $text = 'a a a';
my $replace = '$1/$2-$3';
$text =~ s/(\w) (\w+) (\w+)/$replace/gmi;
$ text here ='$ 1 / $ 2- $ 3'; 所以1美元,2美元,3美元不会改变,但放在$ replace中。我如何使用$ replace内容作为手动打印的重播模式?
答案 0 :(得分:4)
$replace
只是一个字符串。如果您希望将其评估为代码,则需要替换中的/e
修饰符。但是您还需要为评估准备字符串以插入变量:
my $replace = 'qq($1/$2-$3)';
$text =~ s/(\w) (\w+) (\w+)/$replace/gmiee;
我们使用双重评估首先将变量转换为字符串,然后评估该字符串。
然而,每当你发现自己依赖于eval时,你可能正在做一些不必要的事情。 Eval可能是相当邪恶的,正如OmnipotentEntity正确指出的那样,因此使用它时要非常小心。