2010-03-02 82 views
3

是否可以將-w標記添加到perl程序的第一行,然後從shell(如bash或dos)運行該程序,並將所有警告寫入文件?將perl -w標記的結果寫入文件

perl somescript.pl > somefile.txt 

這是倒臺檢查學校的COBOL課程。我想在我面前將所有的警告都放在一張紙上,這樣我就可以通過我的程序並逐個修復它們。如果上述命令不起作用,是否有編程方式將腳本的所有警告都存入文件?多謝你們!

回答

4

試試這個:

perl somescript.pl 2&> somefile.txt 

當您使用純重定向(>),你只重定向標準程序輸出流,而警告得到保存標準錯誤輸出流。例如參見Bash Reference Manual

CPAN上還有一個Vi::QuickFix模塊,可以將警告保存到一個文件中,您可以將其加載到Vim中並檢查所有警告,而無需手動查找行號。 (谷歌代表vim quickfix。)但我沒有自己嘗試。

1

zoul處理重定向的東西,所以這裏是關於警告的驚人複雜的答案。

只需調用程序,像這樣:perl -w script.pl

這迫使警告所有腳本和所有模塊啓用隨處可見。在您編寫的每個模塊中使用警告雜注真的更好。有關此主題的更多信息,請參見perldoc perllexwarn

調試時使用的另一個技巧是Carp::Always。如果在每個錯誤上強制執行完整的堆棧跟蹤。我覺得這非常有幫助。只要像這樣運行腳本:

perl -MCarp::Always somescript.pl 

或得到它到一個文件:

perl -MCarp::Always somescript.pl 2&> somefile.txt 

最後,我會從你的問題多一點離題。許多人喜歡使用類似Log4Perl的日誌庫來測試代碼。像這樣的工具可以讓您在代碼的單獨運行中啓用特定級別的日誌記錄(例如正常或調試)或應用程序的特定部分。這是調試打印語句的最終(?)演變。在開發過程中對失敗進行調試可能非常有用,而在達到維護階段後可以在現場進行調試。