In article news:d8iitj$1ao4$1@nntp.tiki.ne.jp
 "H.Yamaguchi" <hyama@mx7.tiki.ne.jp> wrote:

>  stdout出力の順序が、実行順序にならないのですね。

 もともと、コマンドライン上でも print の出力は
実行順では無いですね。改行か close か、内部的な
flush まで(system '')バッファリングされるだけ、
そして、サーバー上では改行で flush しないんですね。

    open( OUT1, '>/dev/stdout' ) || die;
    open( OUT2, '>/dev/stdout' ) || die;
    print OUT1 "1 OUT1-1\n";
    print OUT2 "2 OUT2-1\n";
    print OUT1 "3 OUT1-2  ";
    print OUT2 "4 OUT2-2  ";
#   system '';                 # flush ALL
    print OUT1 "5 OUT1-3\n";
    print OUT2 "6 OUT2-3\n";
    close OUT2;
    close OUT1;


# 上をコマンドライン上で実行すると。123546
1 OUT1-1
2 OUT2-1
3 OUT1-2  5 OUT1-3
4 OUT2-2  6 OUT2-3

# コマンドライン上で sytem を有効にして実行すると。123456
1 OUT1-1
2 OUT2-1
3 OUT1-2  4 OUT2-2  5 OUT1-3
6 OUT2-3
# OUT2 を先に open すると 124356

# cgi として実行させると。246135
2 OUT2-1
4 OUT2-2  6 OUT2-3
1 OUT1-1
3 OUT1-2  5 OUT1-3

# cgi として close OUT1/2 を逆転して実行させると。135246
1 OUT1-1
3 OUT1-2  5 OUT1-3
2 OUT2-1
4 OUT2-2  6 OUT2-3

-- 
山口@福岡 <hyama@mx7.tiki.ne.jp>