主动 Perl 会删除“^”来自@ARGV
以下代码仅适用于mac,但不适用于windows7。
perl -e "print @ARGV" aaa^bbb
在Mac(perl 5.10,darwin)上,它按预期打印:aaa^bbb
在Windows 7,32位(ActivePerl 5.12)上,它打印出:aaabbb
“^”字符被从@ARGV中抛出。 该字符是我正在使用脚本的文件名的一部分,因此我需要能够从@ARGV 读取它。
我尝试使用“aaa\^bbb”,但它只打印出“aaa\bbb”。
The following code works only on mac, but not on windows7.
perl -e "print @ARGV" aaa^bbb
On Mac (perl 5.10, darwin) it prints out as expected: aaa^bbb
On Windows 7,32bit (ActivePerl 5.12) it prints out: aaabbb
The "^" character is thrown out of @ARGV.
This character is part of a filename that I'm using the script with, so I need to be able to read it from @ARGV.
I tried using "aaa\^bbb" but it just prints out "aaa\bbb".
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
不是 ActivePerl 丢弃
^
字符,而是 Windows 命令提示符:您需要引用参数:
或者您可以使用第二个插入符号转义它:
插入符号
^
是转义字符,类似于 Unix shell 中的\
。It's not ActivePerl that's discarding the
^
character, it's the Windows command prompt:You need to quote the argument:
Or you can escape it with a second caret:
The caret
^
is an escape character, similar to\
in Unix shells.它也不适用于 Strawberry Perl。但是,您可以通过将参数传递到引号中来解决此问题:
在 Windows 7 上使用 Strawberry Perl,输出为
It doesn't work on Strawberry Perl, either. However, you can get around this by passing the argument into quotes:
Using Strawberry Perl on Windows 7, the output is