在Perl中使用全局变量时生成警告

时间:2012-04-26 21:45:58

标签: perl warnings global

如果Perl子例程正在使用全局变量,有没有办法生成警告?

#!/usr/bin/perl -w  
use strict;
my $GlobalVariable;

#  Main Start

#  Main End

sub  MyFunction
{
    my $LocalVariable;
    $GlobalVariable=1;

}

在此代码中,Perl仍然会警告MyFunction()正在使用$GlobalVariable

3 个答案:

答案 0 :(得分:2)

标准做法是use strict 'vars';。 键入后,您必须完全限定全局变量(例如$main::GlobalVar)或Perl将抛出编译时错误。

答案 1 :(得分:1)

是的,只是use strict并且它将捕获尝试访问任何变量,除非您明确声明它是本地或全局或完全限定其名称。您可以尝试tie访问当前的包全局范围(毕竟它是一个哈希)来捕获对已声明变量的访问,但不建议这样做,因为有很多合理的理由(例如所有来自perlodc perlvar)的好东西。

答案 2 :(得分:1)

如果您的意思是“警告Perl代码是否使用任何全局变量”,我认为目前没有预定义的方法来执行此操作。

如果你想不允许使用任何非标准Perl全局变量,可以使用CPAN中的Devel :: FindGlobals来获取所有全局变量,然后警告是否存在任何非标准全局变量定义