为什么我收到“找不到字符串终止符”“” -e line 1" 处 EOF 之前的任意位置当我尝试在 Windows 上运行 Perl 单行代码时?

发布于 2024-12-10 02:10:21 字数 173 浏览 1 评论 0 原文

我尝试在 Windows 5.14.2 上运行以下命令,

C:\Perl>perl -e 'print "Hello World \n"'
Can't find string terminator "'" anywhere before EOF at -e line 1.

我缺少什么?

I am trying to run the following on Windows with 5.14.2

C:\Perl>perl -e 'print "Hello World \n"'
Can't find string terminator "'" anywhere before EOF at -e line 1.

What am I missing?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

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

发布评论

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

评论(4

彻夜缠绵 2024-12-17 02:10:21

您缺少一个像样的外壳,具有健全且定义明确的引用规则。在 Windows 上,只有双引号才被视为引号,并且转义规则定义不明确且不一致。尝试:

perl -e "print qq{Hello World \n}"

我强烈建议避免在 Windows 上使用除最简单的俏皮话以外的任何内容。 (Windows 语句的另一个问题是 Windows shell 不扩展通配符。如果您在命令行上使用 *.txt,它会查找字面上名为 * 的文件.txt。稍后您会遇到它。)

在 Windows 上,您键入的内容相当于:

perl -e "'print" "Hello World \n'"

也就是说,Perl 尝试执行的代码是 'print @ARGV 包含单个字符串你好世界\n'。 (这不是换行符,而是一个反斜杠后跟 n)。

You're missing a decent shell with sane and well-defined quoting rules. On Windows, only the double quote is considered a quote, and the escaping rules are poorly defined and inconsistent. Try:

perl -e "print qq{Hello World \n}"

I strongly recommend avoiding anything but the very simplest one-liners on Windows. (Another problem with Windows one-liners is that the Windows shell doesn't expand wildcards. If you use *.txt on the command line, it'll look for a file named literally *.txt. You'll run into that later.)

On Windows, what you typed is equivalent to:

perl -e "'print" "Hello World \n'"

That is, the code Perl is trying to execute is 'print with @ARGV containing the single string Hello World \n'. (That's not a newline, that's a backslash followed by n).

真心难拥有 2024-12-17 02:10:21

在 Windows 上,引号应该颠倒。所以,而不是:

C:\Perl>perl -e 'print "Hello World \n"'

它应该是:(

C:\Perl>perl -e "print 'Hello World \n'"

归属学习Perl,第六版,第 295 页)

On Windows, the quotation marks should be reversed. So, rather than:

C:\Perl>perl -e 'print "Hello World \n"'

it should be:

C:\Perl>perl -e "print 'Hello World \n'"

(attribution Learning Perl, 6th edition, p. 295)

别低头,皇冠会掉 2024-12-17 02:10:21

我也发现这很有效。我正在使用 Windows 7,使用 c:\Windows\system32\cmd.exe

perl -e "$a=2; print(\"$a \n \");"

我在 print 语句中使用转义斜杠来显示引号 \"

I also found this to work. I am using Windows 7 using c:\Windows\system32\cmd.exe

perl -e "$a=2; print(\"$a \n \");"

I'm using the escape slash in my print statement to get the quotes to appear \"

江湖彼岸 2024-12-17 02:10:21

在 Windows 上,以下命令有效:

perl -e "print \"Hello world\""

On Windows the following command works:

perl -e "print \"Hello world\""

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