gpt4 book ai didi

windows - 为什么我的 Perl 单行程序不能在 Windows 上运行?

转载 作者:可可西里 更新时间:2023-11-01 12:36:06 24 4
gpt4 key购买 nike

在 Windows 命令提示符下,我生成了目录中所有文件的文本文件:

dir c:\logfiles /B > config.txt

输出:

0001_832ec657.log
0002_a7c8eafc.log

我需要将“config.txt”文件提供给另一个可执行文件,但在此之前,我需要修改文件以添加可执行文件需要的一些额外信息。所以我使用以下命令:

perl -p -i.bak -e 's/log/log,XYZ/g' config.txt

我期待的结果是:

0001_832ec657.log,XYZ
0002_a7c8eafc.log,XYZ

但是,“config.txt”文件没有被修改。使用“-w”选项,我收到警告消息:

Useless use of a constant in void context at -e line 1.

我做错了什么?

最佳答案

Windows cmd.exe 不使用 ' 作为字符串定界符,仅使用 "。您所做的等同于:

perl -p -i.bak -e "'s/log/log,XYZ/g'" config.txt

所以 -w 提示“你给了我一个字符串,但它什么也没做”。

解决方案是改用双引号:

perl -p -i.bak -e "s/log/log,XYZ/g" config.txt

或者干脆不使用它们,因为此命令中没有可由 cmd.exe 解释的元字符。

附录

cmd.exe 对于习惯于 sh-like shell 的人来说是一个非常麻烦的野兽。以下是关于 perl 调用的一些其他常见故障和解决方法。

@REM doesn't work:perl -e"print"@REM works:perl -e "print"@REM doesn't work:perl -e "print \"Hello, world!\n\""@REM works:perl -e "print qq(Hello, world!\n)"

关于windows - 为什么我的 Perl 单行程序不能在 Windows 上运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/660624/

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