从here读取File::Find::Closure
模块的源代码,我无法理解这些行的目的:
package File::Find::Closures;
use strict;
use warnings;
no warnings;
warnings
模块中是否有某些内容无法关闭?答案 0 :(得分:7)
从功能上讲,这没有任何意义。这与使用
完全相同no warnings;
我可以想到三个动机:
编码员必须遵守一项要求使用use warnings;
的政策,并且他仍然希望违反政策的精神,同时仍遵循政策信。
编码员希望使用-w
覆盖no warnings;
,他错误地认为必须首先使用use warnings;
加载模块。
编码员希望使用use warnings;
,所以他做了,但模块还没有准备就绪,所以他暂时添加了no warnings;
。
答案 1 :(得分:1)
通常在代码块中使用no warnings
,在整个块中使用use warnings
。
请考虑以下事项:
use warnings;
use strict;
my $one = "one" + 2;
{
no warnings;
my $two = "two" + 2;
}
my $three = "three" + 2;
这会对vars $one
和$three
发出警告,但不会发送$two
的警告:
Argument "one" isn't numeric in addition (+) at stack.pl line 5.
Argument "three" isn't numeric in addition (+) at stack.pl line 12.
您在上面描述的用法会使use warnings
pragma多余,因为所有no warnings
都将应用于块的其余部分。