如何设置类似Java的"静态变量"在Perl中可以被其他类访问?

时间:2014-04-22 12:41:29

标签: perl variables static

我有两个类,比如说A和B,我需要在A类中设置一个静态变量(比如Java中的静态变量),并从类B中访问变量(在Java中使用ClassName.variable名称)。我可以在Perl中做这样的事情。

提前致谢

2 个答案:

答案 0 :(得分:1)

tree . 
    ├── foo.pl
    └── lib
         ├── A.pm
         └── B.pm


cat lib/A.pm 
package A;
use strict;
use warnings;
our $foo = 7;
1;


cat lib/B.pm 
package B;
use strict;
use warnings;
use feature qw/ say /;
use A;
say $A::foo;
1;


cat foo.pl 
#!/usr/bin/env perl
use strict;
use warnings;
use B;


perl -Ilib foo.pl 
7

答案 1 :(得分:0)

我真的不懂Java,所以我猜你的意思是"静态变量"与范围有关?在perl' my'和我们的'是你可以控制范围的方法,但我相信我说帽子包/模块制作变量的范围"私人"到它们被声明的.pm文件(纠正这个和/或详细说明其他的perlistas!)。

关于如何"访问"他们的 Programming Perl(第2版)副本在第2章的 Scoped Declarations 一节中介绍了这一点。但这是第107页第一个脚注的简洁(略微编辑)部分:

  

库,模块和类使用包来存储它们自己的私有数据,因此它不会与主程序中的数据冲突。如果您看到有人写$Some::stuff,他们会使用包Some中的$ stuff标量变量。

Exporter文档和此perlmonks node about global variables可能会帮助您更清楚地了解perl中的变量和范围。经典的 perlmonks 节点 - Variable Scoping in Perl: the basics - 经常被参考: - )

如果您已经知道如何编程(即在Java中)有时候另一个很好的参考(仅略微过时)"如何"在Perl做的事情是 The Perl Cookbook - 你可以在网上找到的摘录。

干杯,