gpt4 book ai didi

regex - 如何使用 Perl 替换运算符禁用变量插值?

转载 作者:行者123 更新时间:2023-12-04 17:37:52 24 4
gpt4 key购买 nike

我正在尝试替换 VMS 上文本文件中的特定行。通常,这是一个简单的 Perl 单行代码。但是当替换端是一个包含 VMS 路径的符号时,我遇到了问题。这是文件和我尝试过的:

file1.txt 的内容:

foo
bar
baz
quux

尝试替换第 3 行:
$ mysub = "disk$data1:[path.to]file.txt"
$ perl -pe "s/baz/''mysub'/" file1.txt

产生以下输出:
foo
bar
disk:[path.to]file.txt
quux

看起来 Perl 过于急切并取代了 $data1包含不存在变量内容的路径的一部分(即,什么都没有)。与调试器一起运行证实了这一点。我没有提供 /e ,所以我认为 Perl 应该按原样替换文本。有没有办法让 Perl 做到这一点?

(另请注意,我可以在 linux 命令行中重现类似的行为。)

最佳答案

ruakh阅读我的评论时发现,访问 %ENV 可以解决 perl 插值的问题。 hash,而不是使用 shell 变量:

perl -pwe "s/baz/$ENV{mysub}/" file1.txt

已添加 -w因为我不相信不使用 warnings即使在一个类轮。

关于regex - 如何使用 Perl 替换运算符禁用变量插值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12678519/

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