[英]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
757365207761726e696e67733b0d
0d
7072696e742022666f6f5c6e223b0d
0d
对于Perl来说,这就是一行。 是的,您的整个程序的排行很长。
从MacOS行尾(一台在10年前已淘汰的机器)切换到Windows行尾,您的问题就应该消除了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.