以下代码仅适用于mac,但不适用于windows7。
perl -e "print @ARGV" aaa^bbb
在Mac上(perl 5.10,darwin),它按预期打印出来:aaa ^ bbb
在Windows 7,32bit(ActivePerl 5.12)上打印出来:aaabbb
“@”字符被抛出@ARGV。 这个字符是我使用脚本的文件名的一部分,所以我需要能够从@ARGV读取它。
我尝试使用“aaa \ ^ bbb”,但它只打印出“aaa \ bbb”。
答案 0 :(得分:11)
放弃^
字符的不是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中的\
。
答案 1 :(得分:1)
它也不适用于Strawberry Perl。但是,你可以通过将参数传递给引号来解决这个问题:
perl -e "print @ARGV" "aaa^bbb"
在Windows 7上使用Strawberry Perl,输出为
aaa^bbb