我想在我的模块中创建一个静态变量。我怎样才能做到这一点?我可以使用our
或state
吗?
这是我想要实现的一个例子:
use MyModule;
MyModule::increase_count(); # should return 0
MyModule::increase_count(); # should return 1
MyModule::increase_count(); # should return 2
答案 0 :(得分:7)
如果你想使用state
(这是一个好主意):
package MyModule;
# return the previous value
sub increase_count {
state $count = 0;
return $count++;
}
使用state
可以最大限度地降低符号的可见性。如果必须共享多个子对象的可见性,则可以在块中包含词法变量:
{
my $count = 0;
sub increase_count { $count++ }
sub current_count { $count }
sub decrease_count { $count-- }
}
答案 1 :(得分:1)
如果您想直接访问$counter
个包之外的MyModule
变量,请使用our
,但如果不这样做,那么应使用my
,< / p>
package MyModule;
my $counter = 0;
sub increase_count {
return $counter++;
}