回答
是的,这是必要的。
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表明这已被仔细研究过几次。 –