2014-02-12 44 views
0

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

这不是UNIX中的问题,而是只出现在窗口中。我正在使用变量来搜索文件并将其替换为所需的字符串。 另外我在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顶替并不如预期的工作搜索?

+0

这是无效的perl的'$ oldstring = 1234 $ newstring = 6789'。每行末尾缺少';'。请发布您正在运行的实际代码。 –

+1

@ztirom - 感谢格式编辑 – joe

+0

@ Dr.Avalanche - 抱歉,这是我的第一篇文章。这是一个大脚本,我只是想在这里发布相关部分。仍然是错误的。 – joe

回答

1

你需要合适的报价为system()和命令行,

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

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

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

感谢您的解决方案。如果没有创建背面文件,这一个衬垫不能在窗口中工作吗?虽然unix似乎没有问题。 – joe

+0

@joe检查http://stackoverflow.com/questions/2616865/why-do-i-have-to-specify-the-i-switch-with-a-backup-extension-when-using-active –