我继承了一些perl代码,当然没有使用strict或warnings,因此我经常使用未初始化的变量等。
我想像这样为我修改的代码部分加上括号:
use warnings;
use strict;
... my code changes and additions ...
no strict;
no warnings;
看起来似乎行得通,但我在破解关于use的官方文档时遇到了问题。当它说这些是编译器指令并导入到当前“块作用域”时,我无法理解其含义。这是否意味着任何范围都可以具有未配对的use strict
和no strict
? 全局范围中的no strict
是否实质上撤销了同一范围内先前的use strict
的含义?
use strict
的人当然也不允许轻松的代码封装... 我必须添加到他们的 eleventytwo 全局哈希表中,你看... - stevesliva%main::blah
(假设它在 main 包中)引用它们的全局变量。更好的方法是将您需要修改的它们的全局变量通过引用传递到您的子程序中:some_new_sub(\%blah)
。这将防止它们的全局变量混乱感染新代码。起初可能会很凌乱,但它会让您更好地了解哪些代码需要哪些数据。在此过程中,“提炼函数”模式将是您最有力的工具。 - Schwern