2

これは私を手に入れました。

これは機能します:

print "Processing Feed\n";
while ( my @p = $mainex->fetchrow_array ) {
    my $iis = "$pcount";
    print "$iis\n";
    # ... Do Other Stuff Here
    $pcount++;
}

これにより、次のことが得られます。

Processing Feed
1
2
3
4
5
6
7
8
9
10
...

これは機能しません (行 4 から \n を削除しました):

print "Processing Feed\n";
while ( my @p = $mainex->fetchrow_array ) {
    my $iis = "$pcount";
    print "$iis";
    # ... Do Other Stuff Here
    $pcount++;
}

単純に次のようになります。

 Processing Feed

次のようなものを使用して、レコードのカウントを出力するカウンターを構築しようとしていました。

while( Something ){
    print "\b\b\b\b\b\b\b\b\b\b\b";
    print "$count";
    $count++;
    # Do stuff here
}

2 番目の例で \n がない場合、何も画面に出力されない理由はありますか? 私はこれまで何度もそれを行ってきましたが、なぜ機能しないのかわかりません。

4

2 に答える 2

6

印刷の最後の改行は、標準出力のフラッシュをトリガーし、画面に印刷します。perl スクリプトの先頭に追加$|++すると、stdout の自動フラッシュがオンになり、数値が表示されます。

于 2013-03-20T18:07:21.503 に答える
4

バッファリングされた I/O。

改行がある場合、またはバッファがいっぱいになった場合 (512 バイトまたは 4096 バイト、またはその他のかなりの数になる可能性があります)、データは画面にフラッシュされます。

于 2013-03-20T18:07:52.863 に答える