Perl搜索并替换变量和捕获组

时间:2013-09-04 15:11:35

标签: regex perl variables capture-group

正如问题所说,我正在尝试使用变量和捕获组进行搜索替换。也就是说,替换字符串包含$ 1。我按照herehere的答案,但他们没有为我工作;更换中需要1美元。你能帮我发现一下我的问题吗?

我正在从像这样的文件中读取我的正则表达式:

while( my $line = <$file>) {
    my @findRep = split(/:/, $line);
    my $find = $findRep[0];
    my $replace = '"$findRep[2]"'; # This contains the $1
    $allTxt =~ s/$find/$replace/ee;
}

如果我手动设置my $replace = '"$1 stuff"',则替换按预期工作。我已经玩过我能想到的每一个/双引号和/e组合。

2 个答案:

答案 0 :(得分:2)

您使用的是单引号,因此$findRep[2]未进行插值。试试这个:

my $replace = qq{"$findRep[2]"};

答案 1 :(得分:1)

为什么在@findRep

中已有值时更换正则表达式
while( my $line = <$file>) {
    my @findRep = split(/:/, $line);
    $findRep[0] = $findRep[2];
    my $allTxt = join(":", @findRep);
}