在搜索中使用变量并在perl中替换

时间:2014-02-12 10:07:47

标签: regex perl replace

我在尝试使用perl中的搜索n替换选项时遇到问题。

这不是unix中的问题,而是仅出现在windows中。我正在使用变量来搜索文件并用所需的字符串替换它。 我也在perl脚本中使用它,所以它只会增加问题!

$oldstring = 1234;
$newstring = 6789;

system("perl -pi.back e s/$oldstring/$newstring/g $filename");

我正在从数组中检索目录中的文件名,并将它们作为输入传递给单行。输出文件似乎没有变化,但它也没有报告任何警告或失败。

我也尝试了以下内容,

system("perl -pi.back e 's/$oldstring/$newstring/g' $filename");

为什么搜索n替换不按预期工作?

1 个答案:

答案 0 :(得分:1)

您需要为system()和命令行

进行适当的引用
system(qq(perl -pi.back -e "s/$oldstring/$newstring/g" $filename));

或使用更简单,更高效的系统而无需调用shell,

system("perl", "-pi.back", "-e", "s/$oldstring/$newstring/g", $filename);