我在perl中有一個計算量很大的任務,並且希望通過在計算的每個部分完成後打印一段時間來通知用戶計算正在進行。不幸的是,在我打印「\ n」之前,我的期間都沒有打印。我該如何解決這個問題?如何在不等待Perl換行的情況下立即打印文本?
回答
您需要爲標準輸出設置自動刷新。例如:
use IO::Handle;
STDOUT->autoflush(1);
foreach (1..20) {
print '.';
sleep(1);
}
設置$|=1
開始打印之前。例如。
perl -e ' $|=1; foreach (1..10) { print "$_ "; sleep(1); }'
+1,因爲有人標記了一個工作解決方案。 – 2010-03-12 17:09:24
@ar,'STDOUT-> autoflush(1)'與'$ | = 1'是相同的東西,除了'$ | = 1',是全局的並且'STDOUT-> autoflush(1)'特定於一個句柄。 – 2010-03-12 17:18:51
除非你必須做'使用IO :: Handle'。不是'IO :: Handle'並不是一個標準的模塊,但是......是的。 :(' – 2010-03-12 17:37:23
參見常見問題解答How do I flush/unbuffer an output filehandle? Why must I do this?及注意事項:
除了
$|
特殊的變量,你可以使用binmode
給你的文件句柄:unix
層,這是無緩衝...
對於一般問題,你可能想看看Time::Progress:
%b
%B
進度條,看上去像:
##############......................
一個優秀的文章中,你應該閱讀:Suffering from Buffering?
什麼工作對我來說是放線
STDOUT->autoflush(1);
我行
print ".";
我現有的循環中之前。沒有使用睡眠,因爲害怕更慢地放慢速度。
- 1. 如何在不進行輪詢的情況下等待線程?
- 2. 如何在不打開Java的情況下打印Word文檔?
- 3. 如何在不打印pid的情況下打印「$$」?
- 4. 如何在不顯示打印對話的情況下打印?
- 5. 如何在不等待結果的情況下執行sh文件?
- 6. FiddlerCore在不等待onBeforeResponse的情況下替換圖像
- 7. 如何在不等待ssh2的情況下強制加載PHP
- 8. 如何在不等待的情況下使用未來?
- 9. 如何在不拋出TaskCanceledExceptions的情況下等待任務?
- 10. 如何在不等待的情況下調用異步函數?
- 11. 如何在不等待輸出的情況下繼續CompletableFuture
- 12. 如何在不按下按鈕的情況下立即執行代碼?
- 13. 如何在不刷新緩衝區的情況下打印換行符?
- 14. 在不顯示空白行的情況下打印整個文本文件C++
- 15. 在不解析符號鏈接的情況下打印perl腳本的路徑
- 16. 如何在不使用原始選項的情況下在CUPS打印機中打印文本/普通文檔
- 17. PHP(本地wamp) - 如何在沒有打印對話框的情況下打印
- 18. SSRS 2008 - 在縱向不打印的情況下打印PDF
- 19. 如何在沒有換行符的情況下在GAP中打印到文本文件?
- 20. 如何在不顯示java中的printdialog的情況下打印
- 21. 如何在不立即運行的情況下將參數傳遞給函數?
- 22. 如何在不延遲13秒的情況下立即執行此AppleScript?
- 23. 如何在不等待ms sql結果的情況下執行查詢?
- 24. 如何在不等待Ajax響應的情況下執行計數統計
- 25. 如何在不等待退出的情況下運行外部程序?
- 26. 如何在不使用循環的情況下打印階乘?
- 27. 如何在不隱藏C#的情況下打印Excel?
- 28. 如何在不使用u'\ uXXXX'的情況下打印unicode
- 29. 如何在等待下載後立即顯示圖像
- 30. 美麗的湯 - 在不打印子元素的文本的情況下打印容器文本
@Hans請不要鏈接到未經授權的書籍副本 – 2010-03-12 17:16:28
請參閱http://oreilly.com/catalog/9780596003135和http://oreilly.com/catalog/9780596003135。 – 2010-03-12 17:21:14
對不起,它剛剛彈出時我搜索了網絡,現在刪除了鏈接。 – 2010-03-12 17:49:13