Почему Perl и Python выводят print с помощью \ n? - PullRequest
3 голосов
/ 25 марта 2011

Почему мне нужно ставить "\ n" дважды после "Content-Type: text / html" с Perl, но только один раз с 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 ]

15 голосов
/ 25 марта 2011

Поскольку печать в Python печатает с новой строки, а печать в Perl - нет.

print "Hello world!" в Python эквивалентно print "Hello world!\n" в perl.В Perl 6 есть команда say, которая делает то же самое, что и печать Python, но, к сожалению, в Perl 6 нет стабильных реализаций.В Perl 5.10 или более поздней версии вы можете использовать say, вставив use feature 'say' в свой скрипт.

10 голосов
/ 25 марта 2011

Perl's print не добавляет символ новой строки.Perl's 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 голос
/ 25 марта 2011

Python's print выводит новую строку автоматически;Perl's не делает (если вы не установите $\ = "\n").С более новым Perl есть также say, как упоминалось другими.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...