LINUX.ORG.RU

[perl] маленький вопрос


0

0

есть хеллоуворд:
####################################################

#!/usr/bin/perl -wWtT

use strict;


print «hello_world!\n» . «333»;

chdir «/home/etc/» || warn «Nonono! » . $!;

print «\nends!\n»;


###################################################
вот его вывод:

[izx32@localhost PERL]$ ./2.perl
hello_world!
Nonono! No such file or directory at ./2.perl line 8.
333
ends!
[izx32@localhost PERL]$

################################################

вопрос, почему такой порядок вывода?

Добавить в начало
$|=1;

ovax ★★★ ()

ответ: потому что warn пишет в STDERR, а print в STDOUT;
и да, буфера.

iSage ★★★★ ()

«hello_world!\n» > в STDOUT (перевод строки проталкивает буфер)

«333»; > попадает в буфер (нет перевода строки).

warn «Nonono! » . $!; > в STDERR на котором буферизация по умолчанию отключена.

«\nends!\n»; > перевод стркои проталкивает буфер в котором 333, и потом печатает ends

OxiD ★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.