Perl regexp,$ 1和/ e

时间:2012-11-01 20:24:38

标签: regex perl

我正在制作一个正则表达式构造函数。 但是在跑步时:

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内容作为手动打印的重播模式?

1 个答案:

答案 0 :(得分:4)

$replace只是一个字符串。如果您希望将其评估为代码,则需要替换中的/e修饰符。但是您还需要为评估准备字符串以插入变量:

my $replace = 'qq($1/$2-$3)';
$text =~ s/(\w) (\w+) (\w+)/$replace/gmiee;

我们使用双重评估首先将变量转换为字符串,然后评估该字符串。

然而,每当你发现自己依赖于eval时,你可能正在做一些不必要的事情。 Eval可能是相当邪恶的,正如OmnipotentEntity正确指出的那样,因此使用它时要非常小心。