主动 Perl 会删除“^”来自@ARGV

发布于 2024-12-04 13:37:13 字数 295 浏览 2 评论 0原文

以下代码仅适用于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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

挽清梦 2024-12-11 13:37:13

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

It's not ActivePerl that's discarding the ^ character, it's the Windows command prompt:

C:\>echo aaa^bbb
aaabbb

You need to quote the argument:

C:\>perl -e "print @ARGV" "aaa^bbb"
aaa^bbb

Or you can escape it with a second caret:

C:\>perl -e "print @ARGV" aaa^^bbb
aaa^bbb

The caret ^ is an escape character, similar to \ in Unix shells.

放赐 2024-12-11 13:37:13

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

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

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

aaa^bbb

It doesn't work on Strawberry Perl, either. However, you can get around this by passing the argument into quotes:

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

Using Strawberry Perl on Windows 7, the output is

aaa^bbb
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文