以下代码仅适用于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”。
丢弃^
字符的不是 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。
它也不适用于Strawberry Perl。但是,您可以通过将参数传递到引号中来解决此问题:
perl -e "print @ARGV" "aaa^bbb"
在 Windows 7 上使用 Strawberry Perl,输出为
aaa^bbb