不清楚perl脚本执行

kr8*_*r85 2 perl

我的perl scipt的执行官不清楚.它不执行每行一行,我不知道为什么?

码:

#!usr/bin/perl -w
#line 200 "Level Check"
print "\n1";
$level=554;
if($level > 550){
warn "Level Higher Than 550 ($level)";
}
print "\n2";
Run Code Online (Sandbox Code Playgroud)

输出:

水平检查线203的水平高于550(554).

1

2

为什么不输出:

1

水平检查线203的水平高于550(554).

2

Bri*_*ach 11

因为STDOUT是缓冲的.STDERRSTDOUT被冲洗之前警告即将到来.

默认情况下warn()转到STDERRprint转到STDOUT.在您当前的代码中,您看到STDERR之前已被刷新STDOUT

您可以通过在顶部添加以下内容来更改该行为:

select STDERR; $| = 1;
select STDOUT; $| = 1; 
Run Code Online (Sandbox Code Playgroud)

设置STDOUT并且STDERR无需缓冲,并在每个打印件上刷新.