2013-03-20 116 views
2

這一個讓我。Perl循環沒有打印出字符

這工作:

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 
} 

任何想法,爲什麼當出現在第二個例子中沒有任何\ n被打印到屏幕?之前我已經做了很多次,並且不知道爲什麼它不起作用。

+0

您不需要強制'$ count'作爲[print] $ count「;'作爲['print'](http://p3rl.org/print」perldoc -f print「)的字符串。迫使它充當一個字符串。所以只需寫'print $ count;'。至於'print'$ iis \ n「;'vs'print $ iis,」\ n「;在這種情況下,真的沒關係。 – 2013-03-22 01:33:56

回答

6

打印結束處的換行符會觸發stdout的刷新,並將其打印到屏幕上。如果您將$|++添加到您的perl腳本的頂部,它將打開標準輸出的自動填充功能,您將看到您的號碼。

+0

真棒謝謝! – someuser 2013-03-20 18:09:35

+0

我沒有得到的唯一原因是爲什麼這個工程然後: – someuser 2013-03-20 18:12:17

+0

$ i = 0; ($ i!= 1000){ print「。」; } – someuser 2013-03-20 18:12:39

4

緩衝I/O。

當有換行符或緩衝區已滿時(可能是512字節或4096字節或其他相當大的數字),數據會刷新到屏幕上。