我正在Windows上使用perl,我正在尝试使用perl做一个内核,用一个包含美元符号的windows变量替换文件中的占位符。有谁知道正确的用法是使它与美元符号一起使用。我尝试了各种各样的方法,似乎无法让它发挥作用。
例如,我有一个属性文件,其中包含一个令牌(!MYPASSWORD!),我试图替换为:
somevalue="!MYPASSWORD!"
我有一个查找变量的批处理文件,称为NEWPASSWORD,其中包含密码$ abc12345 $,我想使用perl替换来替换如下的值。注意我可能并不总是知道$符号的位置,所以我无法逃脱它们。例如,另一个密码可能是abc $ 124 $ 563:
echo %NEWPASSWORD% <-- this would contain $abc12345$
perl -p -i.bak -e "s/!MYPASSWORD!/%NEWPASSWORD%/g" a.properties
完成后我想要a.properties:
somevalue="$abc12345$"
提前致谢
答案 0 :(得分:13)
使用'
作为正则表达式分隔符符号。它将禁用所有变量替换:
perl -p -i.bak -e "s'!MYPASSWORD!'%NEWPASSWORD%'g" a.properties
答案 1 :(得分:2)
我认为您从用户输入获取密码。为什么不在Perl中这样做而不必经历批处理,因为你已经在使用Perl?它更容易。然后,您可以使用Term::Inkey之类的模块来屏蔽密码和内容。