[精讚] [會員登入]
1356

[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

你可能感興趣的文章

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

[PERL] 使用CPAN安裝模組 在Linux 上,CPAN 可以用來安裝或管理 perl 的模組,此文教你怎麼做。

Perl 的列舉寫法(map list) 使用列舉的寫法來設定陣列,非常的強大

PERL 正規表達式會用到的符號 PERL在比對時常常會用到符號整理

[PERL] JSON物件的使用 PERL要處理JSON,可以使用perl提供的模組,一些技巧整理。

[PERL] 10- 雜湊 Perl 的hash 指標陣列

隨機好文

[CodeIgniter 3] 資料庫的使用方法整理1/2 --Select的使用 [CodeIgniter 3] 資料庫的使用方法整理:Select的使用

維修海棉拖把頭 這類型的海棉拖把很好用,可是這近發現海棉頭越來越不耐用,也許是錯覺,以往都能用個三四個月,現在二個月就差不多掉下來。 這

兩次使用InnoDB的慘痛經驗 Mysql 的Innodb引擎雖然好用,但是我得說說我兩次的慘痛經驗,這讓我考慮以後可能不會再使用innodb了

[Mysql/MariaDB] 查看資料庫所占空間 查看資料庫在磁碟中所占空間

超扯童話血多-賣火柴小女孩 這個真的是太扯了,扯到一直笑,尤其是作者出來那段 因為他第一到第九會連播,笑滿累的。如果你看不懂的話表示你的大腦還滿正經