0

正如问题所说,我正在尝试使用变量和捕获组进行搜索替换。也就是说,替换字符串包含 $1。我在这里这里遵循了答案,但它们对我不起作用;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我能想到的每一个单/双引号和组合。

4

2 回答 2

2

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

my $replace = qq{"$findRep[2]"};
于 2013-09-04T15:14:52.903 回答
1

当你已经有了你的价值观时,为什么要替换正则表达式@findRep

while( my $line = <$file>) {
    my @findRep = split(/:/, $line);
    $findRep[0] = $findRep[2];
    my $allTxt = join(":", @findRep);
}
于 2013-09-04T15:20:11.123 回答