如果 Perl 子例程使用全局变量,有没有办法生成警告?
#!/usr/bin/perl -w
use strict;
my $GlobalVariable;
# Main Start
# Main End
sub MyFunction
{
my $LocalVariable;
$GlobalVariable=1;
}
在这段代码中,Perl 中是否有警告MyFunction()
正在使用$GlobalVariable
?
标准做法是use strict 'vars';
. 在你输入这个之后,你必须完全限定全局变量(例如$main::GlobalVar
),否则 Perl 会抛出一个编译时错误。
如果您的意思是“警告 Perl 代码是否使用任何全局变量”,我认为目前没有预定义的方法可以做到这一点。
如果您只想禁止使用任何非标准 Perl 全局变量,您可以使用 CPAN 中的 Devel::FindGlobals 之类的东西来获取所有全局变量,然后在定义了任何非标准全局变量时发出警告。
是的,use strict
除非您明确将其声明为本地或全局或完全限定其名称,否则它将捕获访问任何变量的尝试。您可以尝试tie
访问 current 的包全局范围(毕竟它是一个哈希)以捕获对已声明变量的访问,但不建议这样做,因为这样做有很多正当理由(例如来自 的所有好东西perlodc perlvar
) .