Active Perl从@ARGV中删除"^"

Nir*_*Nir 2 perl argv windows-7

以下代码仅适用于mac,但不适用于windows7.

perl -e "print @ARGV" aaa^bbb
Run Code Online (Sandbox Code Playgroud)

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

在Windows 7,32bit(ActivePerl 5.12)上打印出来:aaabbb

"^"字符被抛出@ARGV.这个字符是我正在使用脚本的文件名的一部分,所以我需要能够从@ARGV读取它.

我尝试使用"aaa\^ bbb",但它只打印出"aaa\bbb".

Kei*_*son 11

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

C:\>echo aaa^bbb
aaabbb
Run Code Online (Sandbox Code Playgroud)

你需要引用这个论点:

C:\>perl -e "print @ARGV" "aaa^bbb"
aaa^bbb
Run Code Online (Sandbox Code Playgroud)

或者你可以用第二个插入符号来逃避它:

C:\>perl -e "print @ARGV" aaa^^bbb
aaa^bbb
Run Code Online (Sandbox Code Playgroud)

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