perl - 事件 perl 从 @ARGV 中删除 "^"

标签 perl windows-7 argv

以下代码只在mac上有效,在windows7上无效。

perl -e "print @ARGV" aaa^bbb

在 Mac(perl 5.10,darwin)上它按预期打印:aaa^bbb

在 Windows 7,32 位 (ActivePerl 5.12) 上它打印出:aaabbb

“^”字符被排除在@ARGV 之外。 这个字符是我正在使用脚本的文件名的一部分,所以我需要能够从@ARGV 读取它。

我尝试使用“aaa\^bbb”,但它只打印出“aaa\bbb”。

最佳答案

丢弃 ^ 字符的不是 ActivePerl,而是 Windows 命令提示符:

C:\>echo aaa^bbb
aaabbb

你需要引用参数:

C:\>perl -e "print @ARGV" "aaa^bbb"
aaa^bbb

或者你可以用第二个插入符号转义它:

C:\>perl -e "print @ARGV" aaa^^bbb
aaa^bbb

插入符 ^ 是一个转义字符,类似于 Unix shell 中的 \

关于perl - 事件 perl 从 @ARGV 中删除 "^",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7427052/

相关文章:

sql - 当某些天的数据丢失时,如何使用 Perl 从 mysql 中检索最新的 'XYZ' 的 10 天数据,即公共(public)假期

perl - 如何使用 perlbrew 管理针对 Web 应用程序的 perl 安装?

windows-7 - 为什么 NTOSKRNL.exe IMAGE_MACHINETYPE header 字段仅在某些版本的 Windows 7 x64 上设置为 x86?

c++ - 打开一个通过命令参数做某事的函数

c - 使用 argv 打开文件给我文件 NULL

perl - 解析电子邮件消息头的最小程序是什么?

list - 循环遍历 Perl 中的列表

.net - Windows 7 Websocket PlatformNotSupportedException

c++ - 从命令提示符使用 MSBuild 编译 C++ 代码时出错

c - atoi (argv[1]) 的返回值始终为 0