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