【发布时间】:2011-06-20 07:47:24
【问题描述】:
对于 perl,我几乎总是使用:
use strict;
use diagnostics;
我建议“使用诊断”而不是 use warnings; here,但我收到了一些负面反馈。所以,现在我在想:
use diagnostics;有什么问题吗?
【问题讨论】:
标签: perl
对于 perl,我几乎总是使用:
use strict;
use diagnostics;
我建议“使用诊断”而不是 use warnings; here,但我收到了一些负面反馈。所以,现在我在想:
use diagnostics;有什么问题吗?
【问题讨论】:
标签: perl
diagnostics 不是像 warnings 这样的词法编译指示。相反,它设置了全局$^W 变量(就像使用-w 标志一样),它为所有 代码启用警告,无论它是否需要,以及你是否编写它。这有点粗鲁。 diagnostics 在生产中使用也很愚蠢。我建议您使用warnings,然后如果您需要解释,只需将您的警告发送到splain。
【讨论】:
use diagnostics 会比use warnings 减慢代码的执行速度。如果您在开发过程中收到不理解的警告,可以将其打开,但最好在完成后将其关闭。
【讨论】:
诊断编译指示是一种开发工具,您并不经常需要它。根据需要使用它:
$ perl -Mdiagnostics myprog
使用命令行-M switch 启用编译指示意味着您不必记得返回并从代码中删除仅测试的use diagnostics 行。
【讨论】:
如果您尚未升级到 perl 版本 5.12,诊断 有一个错误会掩盖特定警告。该错误已在 5.12 中修复(请参阅 perl512delta):
诊断不再抑制使用 范围内的未初始化值(或 翻转)警告。 [perl #71204]
一旦我意识到这个错误,我就回去并在我所有的代码中注释了use diagnostics;。如果收到警告消息,我会暂时取消注释,但总是返回并再次将其注释掉。
【讨论】: