Active Perl从@ARGV中删除“^”

时间:2011-09-15 07:05:30

标签: perl windows-7 argv

以下代码仅适用于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”。

2 个答案:

答案 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