正如问题所说,我正在尝试使用变量和捕获组进行搜索替换。也就是说,替换字符串包含$ 1。我按照here和here的答案,但他们没有为我工作;更换中需要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
组合。
答案 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);
}