2011-09-15 21 views
2

以下代码仅适用于mac,但不适用于windows7。活动perl从@ARGV中删除“^”

perl -e "print @ARGV" aaa^bbb 

在Mac(perl的5.10,达尔文)它打印出预期:AAA^BBB

在Windows 7,32bit(5.12的activeperl),它打印出:AAABBB

的 “^”角色被抛出@ARGV。 此字符是我使用该脚本的文件名的一部分,因此我需要能够从@ARGV中读取它。

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

回答

1

它也不能在Strawberry Perl上工作。但是,您可以解决这个问题通过传递参数到报价:

perl -e "print @ARGV" "aaa^bbb" 

在Windows 7上使用草莓的Perl,输出

aaa^bbb 
+1

该作品,以及在Active Perl的。 – Nir

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中的\