1554

[PERL] Perl 不立即輸出的列印緩衝區問題

“
解決Perl 不立即輸出而是最後一次輸出的列印緩衝區問題
„

分享此文連結 //n.sfs.tw/10673

分享連結 [PERL] Perl 不立即輸出的列印緩衝區問題@新精讚
(文章歡迎轉載,務必尊重版權註明連結來源)
2019-10-22 15:15:29 最後編修
2017-01-24 08:44:36 By 張○○
 

從下面的程式範例開始,在控制台(console)中執行這個perl程式,每隔1秒列印 '.',共100秒:

for(1..100){
    print ".";
    sleep(1);
}

結果並不會1秒印一個點 '.' 出來,而是到了100秒之後,一次把100個點印出來出來。

而我不要這樣的結果,我想要一個個點分別印出來,因此查找了一下,發現這是列印緩衝區的問題:

除非 print 遇到換行 "\n"或結束,否則他不會輸出到STDOUT(檔案或console或印表機)

要將內容直接送出,就要用到特殊變數 $|,也就是一個錢號'$'和一個垂直線'|'。當$|為非0值時,他會將緩衝區的文字送出。因此程式改寫如下:

for(1..100){
    print ".";
    $|=1;
    sleep(1);
}

就可以解決這個問題。但這不是好的作法,因為 $|只要設定一次即可,所以下面才是好的作法:

$|=1;
for(1..100){
    print ".";
    sleep(1);
}

原文 2009-11-26 23:53:54

END

你可能感興趣的文章

[PERL] Perl 不立即輸出的列印緩衝區問題 解決Perl 不立即輸出而是最後一次輸出的列印緩衝區問題

Perl 的特殊變數:$` $' $#陣列 $1 $2 .. $10 \1 \2 .. \10 介紹Perl 的 $` $' $#array $1..$10 \1..\10這些變數

Apache Worker MPM =worker 調整參數 Apache目前一共有三種穩定的MPM(Multi-Processing Module,多進程處理模式 簡稱: MPM)

[PERL] 可用中文取名的中文名函式和package 原來perl 也可以用中文當函式、類別、方法的名稱啊

[PERL] 23-多執行緒 而多執行緒的程式,可在一次執行程式時間,同時進行多線程的計算,在效率上可獲得即大的提升。

[PERL] 11- 雜湊的範例 Perl 的幾個雜湊範例

隨機好文

[jQuery] 利用load()來達成ajax的寫法 jQuery中利用load()來達成ajax的寫法,也有人稱他是假的ajax,作法就是..

APACHE的記錄檔格式 LogFormat 語法 在APACHE中有定義一些記錄的語法模版 在 /etc/httpd/conf/httpd.conf 中: LogForm

[Apache] 自訂錯誤頁面及移掉歡迎頁 Apache 有一個歡迎頁,以正式網站來說,出現這頁有點不專業,該移除它..

用Nibbler檢視你的網站優缺點 用Nibbler檢視你的網站存取能力、seo、社交媒體和技術

製作壓克力紀念牌之二 之前有製作了壓克力的紀念品,這次同事退休,準備來做第二個

精讚::