使用在Windows上包含美元符号的string进行Perlreplace

我在Windows上使用perl,并试图使用perl来代替占位符在文件中使用包含美元符号的Windowsvariables。 有没有人知道什么是正确的用法是使其与美元符号工作。 我已经尝试了各种方法,似乎无法得到它的工作。

例如,我有一个属性文件,其中包含一个令牌(!MYPASSWORD!),我试图replace它:

somevalue="!MYPASSWORD!" 

我有一个batch file,查找一个名为NEWPASSWORD的variables,其中包含密码$ abc12345 $,我想用perlreplace来replace下面的值。 请注意,我可能并不总是知道$标志在哪里,所以我不能逃避它们。 例如,另一个密码可能是abc $ 124 $ 563:

 echo %NEWPASSWORD% <-- this would contain $abc12345$ perl -p -i.bak -e "s/!MYPASSWORD!/%NEWPASSWORD%/g" a.properties 

当它完成我想要a.properties是:

 somevalue="$abc12345$" 

提前致谢

使用'作为正则表达式分隔符号。 它将禁用所有的变量替换:

 perl -p -i.bak -e "s'!MYPASSWORD!'%NEWPASSWORD%'g" a.properties 

我认为你正在从用户输入获取密码。 为什么不在Perl中这样做,而不必经过批处理,因为你已经使用Perl? 它更容易。 您可以使用像Term :: Inkey这样的模块来屏蔽密码和内容。