回答
是的,這是必要的。
use strict
和use warnings
做不同的事情。
從strict
模塊的手冊頁:
嚴格 - Perl的編譯,限制不安全的構造
從perlrun
(爲-w
):
輸出有關可疑 結構的警告,如僅提及的變量名稱 曾經和標量變量是 在設置之前使用 ,重新定義子程序,以 未定義 文件句柄或文件句柄引用以只讀方式打開,你是 嘗試寫上,作爲一個數字,這樣做值不 看起來像 數字,使用一個數組,就好像它是一個標量,如果 你的 子程序遞歸超過100深,和無數其他 的東西。
是的。嚴格防範數量非常有限的事情。警告會提醒您注意不同的更廣泛的問題。
是,考慮:
perl -le "use strict; my $f; my $z = $f*1"
嚴格不讓你知道,$ f是不確定的,同時加入警告將:
perl -le "use strict; use warnings; my $f; my $z = $f*1"
Use of uninitialized value $f in multiplication (*) at -e line 1.
因此建議同時啓用。
這個問題幾天前出現在這裏:Which safety net do you use in Perl?。該鏈接導致對嚴格,警告,診斷和其他類似主題的討論。
「你的意思是必要的?」是我的回答。
如果你認爲strict
和warnings
是一樣的東西,你錯了。這裏的其他人對每個雜注都給出了非常好的答案。
use warnings
一般來說會讓你成爲更好的編碼器。如果學習很重要,那麼我的答案是「是的」。
它還將幫助您避免錯誤,使您的錯誤更容易理解。
一般而言,我會說很少有時候不要同時使用strict
和warnings
。我甚至在我的單人隊中使用警告,例如> perl -we 'print "Hello world!"'
輸入數據需要幾秒鐘,但會爲您節省數小時不必要的工作調試時間。
這不是必要的在這個詞的實際含義。也就是說,一個程序不需要它來操作。人們經常忘記必要的的意思。
但是,如果您的問題是「嚴格啓用警告?」,答案是否定的。你可以看到reading its documentation有什麼嚴格的要求。
warnings
通常用於指出您應該修復的問題。但是,Perl的警告並不要求您修復它們,所以即使它發出警告,您的程序也可以繼續。
有些人會告訴你總是使用警告,但他們制定了這樣的規則,所以他們不必考慮它,或者解釋給那些不會考慮它的人。除了「總是使用警告」之外,任何其他說法都是不受歡迎的。
warnings
是開發人員的工具,如果看到警告的人不會知道他們是什麼或對他們做什麼,他們可能會造成煩惱或混亂。我見過一些實例,其中新的perls開始爲程序發出新的警告,然後由於沒有人監視日誌文件而填滿了磁盤。
我有一個更細緻的規則「當你要做某件事時使用警告,如果不行的話不要使用它們。
我甚至沒有說「總是寫無警告代碼」。我編寫的代碼很多,我只能運行一次,或者從命令行運行,或者在其他我不在乎流水的情況下運行。我不喜歡給其他人提供警告 - 髒代碼,但我不會爲自己做的一些小事而着迷。
對那些您不同意的觀點進行了惡劣的投票。在我的情況下,答案的基礎是將問題解釋爲意思_「是'使用警告'是'使用嚴格'的一個子集?」 - 即「使用嚴格」避免了「使用警告」的需要。 – Alnitak
- 1. 嚴格使用前有沒有使用警告的理由?
- 2. 使用「嚴格使用」,但仍然得到警告
- 3. 可以'使用嚴格'警告而不是錯誤
- 4. 爲什麼使用警告;嚴格使用;在Perl中不是默認的?
- 5. 阻止瀏覽器和警告,嚴格的方式需要
- 6. Chrome網上應用店嚴格警告使用公共API
- 7. 禁用「嚴格使用函數形式」,但保留「Missing」嚴格使用「聲明」警告
- 8. 是否嚴格使用等於完全不使用嚴格的空列表?
- 9. 使用camel時,cxf:rsServer是否需要jaxrs:server?
- 10. 使用AddHandler時,是否需要EnterWriteLock?
- 11. 是否需要使用imap_close?
- 12. 是否需要使用Clonable?
- 13. 警告是否重要?
- 14. npm不推薦使用的警告 - 我是否需要更新某些內容?
- 15. 是否可以在perl中啓用/禁用基於ARGV的嚴格/警告使用?
- 16. 使用utf8時不會輸出Perl警告,嚴格錯誤和診斷錯誤
- 17. 在ECMAScript 6中是否使用「嚴格使用」?
- 18. 如果我們的html文件已經有「嚴格使用」,我們是否需要在外部js文件中使用「嚴格使用」?
- 19. 使用`-D_REENTRANT`時是否需要顯式使用`_r`後綴?
- 20. 使用Unicode時是否需要使用HTML實體?
- 21. 使用htaccess時是否需要使用$ _GET ['varName']?
- 22. 使用VBA連接到Active Directory時,是否需要使用ADO?
- 23. 當使用SurfaceView時,是否需要使用單獨的線程?
- 24. 使用「使用」語句時是否需要關閉連接
- 25. 我們在使用Ajax時是否需要使用XMLHTTPRequest?
- 26. 使用PHP7時,是否需要使用PHPDoc記錄方法?
- 27. 使用分頁時,我是否需要使用mysql_free_result&mysql_close? PHP
- 28. 當我使用Apache Tiles時,是否需要使用XHTML?
- 29. 克++嚴格溢出,優化和警告
- 30. 嚴格警告:非靜態方法
我經常看到這個。我的新迴應將是:http://joelslinux.blogspot.com/2011/06/use-strict-and-warnings.html –
老實說,我很驚訝社區已經看到適合投票這麼高的時候http: //stackoverflow.com/search?q=%5Bperl%5D+strict+warnings表明這已被仔細研究過幾次。 –