支架代码部分在使用严格/不严格?

时间:2015-03-04 23:20:35

标签: perl strict

我继承了一些perl代码,当然没有使用严格或警告,我继续使用未初始化的变量等。

我想将我正在修改的代码部分括起来:

use warnings;
use strict;

... my code changes and additions ...

no strict;
no warnings;

这似乎有效,但是当我说这些是导入当前"块范围的编译器指令时,我有解密the perldoc on use意味着什么的问题。"这是否意味着任何范围都可以use strictno strict取消配对?全局范围尾部的no strict是否基本上在同一范围内撤消了use strict的含义?

1 个答案:

答案 0 :(得分:11)

“阻止范围”意味着use strict;no strict;都会从它们所在的位置到最里面的封闭块的末尾生效,所以不,后来的no strict不撤消早些时候use strict。它只是从代码中的那一点开始为最里面的范围更改它。所以:

{
    use strict;
    # strict in effect
    {
        # strict still in effect
        no strict;
        # strict not in effect
    }
    # strict in effect
    no strict;
    # strict not in effect
    use strict;
    # strict in effect
}