繁体   English   中英

当出现Shebang行时,Perl“ Hello World”不起作用(Windows)

[英]Perl 'hello world' doesn't work when shebang line present (Windows)

我在Windows XP上运行ActiveState Perl 5.10.1。

执行以下程序,但在命令行上不产生任何输出:

#!c:/perl/bin/perl.exe

use strict;
use warnings;

print "foo\n";

如果删除shebang行,则按预期将“ foo”显示为输出。

如果仅使用文件关联( foo.pl ),通过PATH引用perl( perl foo.pl )甚至直接引用perl可执行文件( c:\\perl\\bin\\perl.exe foo.pl )。

我不明白为什么脚本没有shebang行就可以工作,但是当shebang行出现时却没有输出。 我的理解是,对于Windows中的Perl来说,shebang行不是严格必需的,但是如果您要使用-w等开关,这是一种很好的做法。

如果我明确地使句柄为STDOUT,即print STDOUT "foo\\n"; ,则没有任何区别print STDOUT "foo\\n";

这真让我发疯。 任何提示将不胜感激。

我给你的程序不正确。 应该是

perl -0777nE"BEGIN { binmode STDIN }; say unpack 'H*', $_" <foo.pl

但这仍然揭示了问题所在。 您的行以回车符(0D)代替CRLF(0D0A)终止!

2321633a2f7065726c2f62696e2f7065726c2e6578650d
0d
757365207374726963743b0d
7573652‌​07761726e696e67733b0d
0d
7072696e742022666f6f5c6e223b0d
0d

对于Perl来说,这就是一行。 是的,您的整个程序的排行很长。

从MacOS行尾(一台在10年前已淘汰的机器)切换到Windows行尾,您的问题就应该消除了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM