在Perl中用包含$符号的新字符串替换文件中的字符串

问题描述 投票:0回答:2

我正在尝试用现有文件中包含$(美元)符号的新字符串替换字符串。

我在代码中使用了(regex)下面的行,但是无法获得预期的结果。请提出解决方案。

system("perl -pi -e \"s/length\\s+.*/length [index $pkt_len]/g if /^\\s*set_value\\s+length/\" $filename")
perl
2个回答
1
投票

查找解决方案的方法是在调试过程中,应打印出系统调用的行,并在外壳中按预期方式“手动”对其进行测试。

我的猜测是

system("perl -pi -e 's/length\\s+.*/length [index \\\$pkt_len]/g if /^\\s*set_value\\s+length/' $filename")

是解决方案。


0
投票

您需要7个反斜杠(!):

system("echo a | perl -pe \"s/a/\\\\\\\$foo/\"");

输出

$foo
  • [第一个"echo a | perl -pe \"s/a/\\\\\\\$foo/\""perl解释,它将字符串简化为echo a | perl -pe "s/a/\\\$foo/"
  • 然后由外壳程序sh解析为:echo a | perl -pe s/a/\$foo/
  • 最后,它再次被perl解析以提供输出$foo
© www.soinside.com 2019 - 2024. All rights reserved.