Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl 当已经使用严格警告时,是否有必要使用警告?_Perl - Fatal编程技术网

Perl 当已经使用严格警告时,是否有必要使用警告?

Perl 当已经使用严格警告时,是否有必要使用警告?,perl,Perl,代码如下: use strict; use warnings; 是使用警告这里有必要吗?是的,有必要 使用严格的和使用警告做不同的事情 从strict模块的手册页: 严格的− 限制不安全构造的Perl pragma 从perlrun(对于-w): 打印可疑事件的警告 构造,例如变量名 只提到一次的变量和 习惯于 在设置之前,重新定义子例程,引用 未定义 文件句柄或以只读方式打开的文件句柄 正在尝试写入,值用作不可用的数字 看 与数字类似,使用数组就像使用标量一样,如果 你的 子例程递归的深度超

代码如下:

use strict;
use warnings;
使用警告这里有必要吗?

是的,有必要

使用严格的
使用警告
做不同的事情

strict
模块的手册页:

严格的− 限制不安全构造的Perl pragma

perlrun
(对于
-w
):

打印可疑事件的警告 构造,例如变量名 只提到一次的变量和 习惯于 在设置之前,重新定义子例程,引用 未定义 文件句柄或以只读方式打开的文件句柄 正在尝试写入,值用作不可用的数字 看 与数字类似,使用数组就像使用标量一样,如果 你的 子例程递归的深度超过100,其他的则数不胜数 事情


对。严格防范数量非常有限的事情。警告会提醒您一系列不同且更广泛的问题。

是的,请考虑:

perl -le "use strict; my $f; my $z = $f*1"
strict不会让您知道$f未定义,而添加警告将:

perl -le "use strict; use warnings; my $f; my $z = $f*1"
Use of uninitialized value $f in multiplication (*) at -e line 1.

因此,建议同时启用这两个选项。

几天前,这里出现了同样的问题:。这个链接引出了一个关于严格、警告、诊断和其他类似主题的讨论。

“你所说的必要性是什么意思?”这是我的回答

如果您认为
严格
警告
是一回事,那么您就错了。这里的其他人对每一个布拉格语都给出了很好的答案

使用警告
通常会使您成为一名更好的编码员。如果学习很重要,那么我的答案是“是的”

它还将帮助您避免错误,使您的错误更容易理解

总的来说,我想说的是,很少有时候可以保证不同时使用
严格
警告
。我甚至在我的一行程序中使用警告,例如
>perl-we'打印“helloworld!”

输入需要几秒钟的时间,但可以为您节省数小时不必要的调试工作。

按照该词的实际含义,这是不必要的。也就是说,程序不需要运行。人们经常忘记必要的手段

但是,如果您的问题是“strict是否启用警告?”,则答案是否。您可以通过查看strict的功能

警告在指出应该修复的问题时通常很有用。但是,Perl的警告不需要您修复它们,因此您的程序可以继续运行,即使它发出警告

有些人会告诉你要经常使用警告,但他们制定了这样的规则,这样他们就不必去想它,也不必向不愿去想的人解释它。除了“总是使用警告”之外,说任何话都是不受欢迎的

警告
是开发人员的工具,如果看到警告的人不知道警告是什么,也不知道该怎么做,那么很可能只会引起麻烦或困惑。我见过一些实例,新的PERL开始为程序发出新的警告,然后填满磁盘,因为没有人监视日志文件

我有一条更为微妙的规则“当你要做一些事情时使用警告,如果你不想做,就不要使用警告”


我甚至没有说“总是写无警告代码”。我编写了大量代码,可以只运行一次,也可以从命令行运行,或者在其他情况下运行,这些情况下我并不关心代码的草率。我不喜欢给别人发出肮脏的警告,但我不会为自己做的小事而纠结于此

是否有一个例子表明
使用警告
做了其他事情?你应该引用
并为
使用警告
而不是perlrun
-w
@daxim确实是有用的参考,但没有像我从perlrun引用的那样的简明摘要。我没有在乘法(*)中使用未初始化的值$f在perl v 5.8.8下的-e第1行。
,您确定吗?刚刚在5.8.8和5.10.1上进行了测试。两者都给出相同的错误消息。您是否有经过修改的Perl版本?或者你忘了使用警告
@new\u perl,那么您就有了一个非常糟糕的perl安装。(我认为5.8.8在警告中没有提到
$f
,但它确实发出了警告。)我经常看到这种情况。我的新回应将是:老实说,我很惊讶,当这一点已经被反复考虑了好几次的时候,社区竟然认为应该把它投得这么高。在我的案例中,答案是基于将问题解释为“是
使用警告
使用严格
的子集吗?”——也就是说
使用严格
根本不需要
使用警告。