gpt4 book ai didi

从另一个 Perl 脚本内部调用时,Perl 搜索和替换命令不起作用

转载 作者:行者123 更新时间:2023-12-04 12:13:40 25 4
gpt4 key购买 nike

我是 Perl 的初学者。我正在使用 Below Perl 命令在我的 tcl 脚本中搜索和替换“/$”序列。直接在 linux 命令行上使用时效果很好。

perl -p -i -e 's/\/\$/\/\\\$/g' sed_list.tcl

system(`perl -p -i -e 's/\/\$/\/\\\$/g' sed_list.tcl`);
`perl -p -i -e 's/\/\$/\/\\\$/g' sed_list.tcl`;

我遇到以下错误。请帮助解决这个问题。

Bareword found where operator expected at -e line 1, near "$/g"
(Missing operator before g?)
Final $ should be \$ or $name at -e line 1, within string
syntax error at -e line 1, near "s//$/"
Execution of -e aborted due to compilation errors.

我不知道我是否可以像 SED 命令一样使用任何其他分离运算符,如 % 和 #,但是,当我使用“%”运算符进行分离时,我没有看到错误,但工作没有完成。

`perl -p -i -e 's%\/\$%\/\\\$%g' sed_list.tcl`; 

我无法在网络上找到有关“$”变量这一特定问题的足够结果。感谢您的帮助。

最佳答案

这里有人建议我应该在使用系统命令或从 perl 脚本中使用 BackTicks 调用另一个命令时转义所有反斜杠。但后来他们删除了他们的答案。它对我有用。我要感谢每一位付出努力并帮助我解决问题的人。

这是正确的工作代码。

`perl -p -i -e 's/\\\/\\\$/\\\/\\\\\\\$/g' sed_list_gen.tcl`;

或使用如下所示的系统函数

system("perl -p -i -e 's/\\\/\\\$/\\\/\\\\\\\$/g' sed_list_gen.tcl");

再次感谢社区对我的帮助。 . .

关于从另一个 Perl 脚本内部调用时,Perl 搜索和替换命令不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37480019/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com