今天寫乙個小指令碼的時候,需要即時輸出當前進度到命令列上,並即時將重要資料寫入報告檔案中。但是perl預設是有輸出緩衝的,顯示到命令列上必須以\n結尾才行,輸出到檔案中,回車了都不行,非得要等緩衝區滿了。
**:
select( stdout );
$| = 1;
open( report, ">report.txt" ) || die "create report error: $!\n";
select( report );
$| = 1;
select( stdout );
在寫入報告和輸出進度之前這樣處理一下就可以了。第一句是選擇標準輸出控制代碼為當前預設輸出控制代碼,並設定為不緩衝方式。然後選擇檔案控制代碼為預設輸出控制代碼,設定為不緩衝模式。再最後重新設定stdout為預設輸出控制代碼,少了這一句的話,標準輸出就被重定向到檔案裡面去了。
這樣就會即時寫入報告,不用擔心丟失資料了。即使中途中止了程式,也有一部分結果在。做個小tip,免得忘記了,呵呵。
perl的輸出緩衝
perl的輸出緩衝 今天寫乙個小指令碼的時候,需要即時輸出當前進度到命令列上,並即時將重要資料寫入報告檔案中。但是perl預設是有輸出緩衝的,顯示到命令列上必須以 n結尾才行,輸出到檔案中,回車了都不行,非得要等緩衝區滿了。select stdout 1 open report,report.txt...
C 輸出緩衝
c primer io 概念上,數倍型別和字元大小都不會影響我們要執行的io操作。標準庫使我們能忽略這些不同型別的流之間的差異,這是通過繼承機制實現的。由於不能拷貝io物件,因此我們也不能將形參或返回型別設定為流型別。進行io操作的函式通常以引用方式傳遞和返回流。讀寫乙個io物件會改變其狀態,因此傳...
perl的輸入與輸出
讀取標準輸入 鍵盤輸入,回車分行,ctrl c截止 例 while foreach 簡單寫法,將輸入處理到結尾,不同的是while是取一行處理一行,foreach是全部取出之後再一行行處理。都是每一行作為一條資料,存在預設變數 中。鑽石操作符 例 while 它可以讀取乙個檔案 一行行讀取 每一行存...