4

私はこの行動を完全に理解していません。

非常に単純な Perl スクリプトがあります。

#!/usr/bin/perl

use strict;
use warnings;

print "line 1\n";
print STDERR "line 2\n";

コンソールから実行すると、期待どおりの結果が得られます。

$ perl a.pl
line 1
line 2

しかし、ファイルにリダイレクトすると、逆の順序で行が取得されます。

$ perl a.pl &> a
$ cat a
line 2
line 1

コンソールで取得したのと同じ順序で、すべての出力 STDOUT+STDERR をファイルにキャプチャするにはどうすればよいですか?

4

2 に答える 2

0

$| を使用しないでください。代わりに autoflush を使用してください。

STDOUT->autoflush(1);
STDERR->autoflush(1);

見るhttp://perldoc.perl.org/IO/Handle.html

于 2013-06-29T12:55:09.217 に答える