我有一个perl模块,它将某个全局变量的值设置为常量。 我需要将这些全局变量的值设置为只有在调用new()时才可用的值。
有什么办法可以实现吗?
答案 0 :(得分:3)
您使用our
将变量声明为全局变量。然后,如果它们在词法范围内将其声明为our
变量,则可以从同一包中的其他位置访问它。从包外部,您只能使用package :: prefix。
示例:
package Foo;
use strict;
use warnings;
sub new {
our $bar = $_[1];
return bless {}, $_[0];
}
sub get_bar {
our $bar;
return $bar;
}
1;
在另一个档案中:
use strict;
use warnings;
use Foo;
my $foo = Foo->new('baz');
print "This is baz: ", $foo->get_bar, "\n";
print "So is this: ", $Foo::bar, "\n";