为什么Perl和Python的“\ n”打印输出有所不同?

时间:2011-03-25 19:35:02

标签: python perl

为什么我需要在使用Perl的“Content-Type:text / html”之后两次放置“\ n”,但只使用Python一次?例如,以下Python脚本可以工作:

#!/usr/bin/python
print "Content-Type: text/html\n"
print "Hello World!"

但是以下Perl脚本不起作用(它提供了脚本头过早结束的错误消息):

#!/usr/bin/perl
print "Content-Type: text/html\n";
print "Hello World!";

相反,我需要添加额外的“\ n”才能使其正常工作:

#!/usr/bin/perl
print "Content-Type: text/html\n\n";
print "Hello World!";

3 个答案:

答案 0 :(得分:15)

因为Python中的print使用换行符打印并且在Perl中打印不会。

Python中的

print "Hello world!"相当于perl中的print "Hello world!\n"。 Perl 6有一个say命令,它与Python的打印完全相同,但遗憾的是,Perl 6没有稳定的实现。在Perl 5.10或更高版本中,您可以通过在脚本中添加say来使用use feature 'say'

答案 1 :(得分:10)

Perl的print不添加换行符。 Perl的say确实如此。这些是等价的:

# Python
print "Content-Type: text/html"
print ""
print "Hello World!"

# Perl
print "Content-Type: text/html\n";
print "\n";
print "Hello World!\n";

# Perl
local $\ = "\n";
print "Content-Type: text/html";
print "";
print "Hello World!";

# Perl
use 5.010;
say "Content-Type: text/html";
say "";
say "Hello World!";

我建议不要触摸$\;它很容易影响你不希望它影响的代码。

答案 2 :(得分:1)

Python的print自动输出换行符; Perl不会(除非你设置$\ = "\n")。对于较新的Perl,还有其他人提到的say