1

プログラム:testblocks.pl

#!/usr/bin/perl
use strict;
use warnings;

print "Hi";

BEGIN {
        warn "BEGIN";
}
END {
        warn "END";
}
INIT {
        warn "INIT";
}
CHECK {
        warn "CHECK";
}
UNITCHECK {
        warn "UNITCHECK";
}

print "Hello";

出力:

BEGIN at testblocks.pl line 8. 
CHECK at testblocks.pl line 17. 
INIT at testblocks.pl line 14. 
UNITCHECK at testblocks.pl line 20. 
END at testblocks.pl line 11. 
HiHello

今私が使用する場合、\n以下のような印刷ステートメントで

print "Hi\n";
...
print "Hello\n";

出力は次のとおりです。

BEGIN at testblocks.pl line 8.
CHECK at testblocks.pl line 17.
INIT at testblocks.pl line 14.
Hi 
UNITCHECK at testblocks.pl line 20.
Hello 
END at testblocks.pl line 11.

ここで問題を理解することはできません。任意の入力または提案をいただければ幸いです。

4

1 に答える 1

6

印刷バッファの問題のようです。印刷に改行を含めると、バッファはすぐにフラッシュされます。最初のケースでは、改行がない場合、いっぱいになったとき、またはプログラムが終了したときにフラッシュされます。

dgwのコメントは、 STDERR に送らwarnれ、STDOUT に出力されるため、同じバッファにもありません。

于 2013-01-08T09:15:43.827 に答える