我遇到的问题是,即使我已经在更高的范围内声明了我的变量,当我去使用它时,我被告知它需要显式的包名称。代码如下:
my $stats = {
privileges => (),
missing_users => ()
};
LINE:
while (my $line = <$fh>)
{
chomp($line);
next if $line eq "";
my $regex = "";
my $type = "";
while (($type, $regex) = each(%$entry_regex))
{
if ($line =~ /$regex/) {
if ($type eq "EXCEPTION_PRIVS")
44: {
45: push(@{$stats{privileges}}, $1);
46: next LINE;
}
我得到的错误是:
全局符号“%stats”在 Import Routine Log Pars er.pl 第 45 行需要明确的包名称。
我没有收到此错误,并且脚本在use strict;
删除时按需要运行。
我认为,由于我已在“更高”范围内声明它,因此循环内的代码应该可以访问它。为什么我会收到此错误?