2

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

4

2 回答 2

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。

于 2011-09-15T07:10:52.177 回答
1

它也不适用于Strawberry Perl。但是,您可以通过将参数传递到引号中来解决此问题:

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

在 Windows 7 上使用 Strawberry Perl,输出为

aaa^bbb
于 2011-09-15T07:10:59.390 回答