2011-03-25 115 views
3

为什么我需要在Perl的“Content-Type:text/html”后两次放置“\ n”,但是只有一次使用Python?例如,下面的Python脚本工作:为什么Perl和Python的打印输出与“ n”不同?

#!/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!"; 
+0

-1:答案是“因为他们是不同的语言”。为什么这么问?你如何明智地比较两种不同的语言?如果你要比较语言,为什么不问问Ruby,C++,C#和VB呢? – 2011-03-25 21:19:45

回答

15

因为打印在Python打印换行和打印在Perl中没有。

print "Hello world!"在Python中相当于perl中的print "Hello world!\n"。 Perl 6有一个say命令,它和Python的打印一样,但不幸的是,Perl 6没有稳定的实现。在Perl 5.10或更高版本中,您可以通过将use feature 'say'放入脚本中来使用say

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!"; 

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

1

Python的print自动输出换行符; Perl的不(除非你设置$\ = "\n")。正如其他人所提到的,使用较新的Perl也有say