为什么我无法访问我在Perl中的同一个包中声明的子包中声明的变量?

ise*_*cik 3 perl package

我不明白为什么不能$var在sub中访问变量mysub.两个包都在同一个文件中完全定义,如下例所示:

use warnings;
use strict;

Util::mysub();

package Util;

use warnings;
use strict;

my $var = 'i have a value!';

# prints 'var in package: i have a value!'
print "var in package: $var\n";

sub mysub {
    # generates warning 'Use of uninitialized value $var...'
    print "var in sub: $var\n";
}

1;
Run Code Online (Sandbox Code Playgroud)

tjd*_*tjd 8

Util::mysub()在分配给作用域文件之前,您可以调用多行$var.

如果您的包在一个单独的文件中,该use语句及其隐含的BEGIN块将赋予赋值优先级.或者,您可以先放置包定义或使用自己的BEGIN块.