[精讚] [會員登入]
966

[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] 11- 雜湊的範例 Perl 的幾個雜湊範例

Perl 的特殊變數:$_、$&、$! 介紹perl的特殊變數 $_ 、 $&、$!

[PERL] 檢查IP是否在某個網段內:matchcidr 檢查IP是否在某個網段內 matchcidr in perl

自行撰寫syslog server建立資訊安全控管中心#1 -- 前言及syslog介紹 利用PERL將syslog收攏到資料庫的程式

[PERL] 位元運算 Bitwise operation PERL的位元運算整理

[PERL] 取得字串長度 使用length來取得字串長度

我有話要說

>>

限制:留言最高字數1000字。 限制:未登入訪客,每則留言間隔需超過10分鐘,每日最多5則留言。

訪客留言

[無留言]

隨機好文

[jQuery] textarea 的取值和給值 HTML 的 TEXTAREA 標籤若要用 jquery 取值,不能使用 .text() 或 .html() ,使用 .

沒有非誰做不可的事,也沒有不可被取代的人 沒有非誰做不可的事,也沒有不可被取代的人

[JAVA] JWS, JWT, JWE, JOSE是什麼? [JAVA] JWS, JWT, JWE, JOSE是什麼?非常的複雜,儘量來搞清楚..

UTF-8的網頁但IE8一片空白 UTF8編碼的網頁在Firefox 正常顯示、但IE8 就是空白,IE8編碼設定是「自動偵測」可是自動偵測到的是 big5...

一個邏輯的錯誤刪了全部檔案的經驗 今天本來想做一件很簡單的事,但卻足足浪費我多一倍的時間,再加上刪掉我全部的檔案,原因只是因為我自己的邏輯錯誤。