是否存在编码模块的标准方法,以保存要包含在其他所有程序包中的全局应用程序参数?例如:use Config;
?
一个仅包含our
变量的简单程序包?那么只读变量呢?
最佳答案
已经有一个standard Config module,因此请选择其他名称。
假设您的MyConfig.pm
具有以下内容:
package MyConfig;
our $Foo = "bar";
our %Baz = (quux => "potrzebie");
1;
然后其他模块可能会像
#! /usr/bin/perl
use warnings;
use strict;
use MyConfig;
print "Foo = $MyConfig::Foo\n";
print $MyConfig::Baz{quux}, "\n";
如果您不想完全限定名称,请使用标准的Exporter模块。
在
MyConfig.pm
中添加三行:package MyConfig;
require Exporter;
our @ISA = qw/ Exporter /;
our @EXPORT = qw/ $Foo %Baz /;
our $Foo = "bar";
our %Baz = (quux => "potrzebie");
1;
现在,不再需要完整的软件包名称:
#! /usr/bin/perl
use warnings;
use strict;
use MyConfig;
print "Foo = $Foo\n";
print $Baz{quux}, "\n";
您可以使用
MyConfig.pm
将只读标量添加到our $READONLY;
*READONLY = \42;
perlmod中对此进行了说明。
将其添加到
@MyConfig::EXPORT
之后,您可以尝试$READONLY = 3;
在不同的模块中,但您会得到
尝试在./program第12行修改只读值。
或者,您可以使用constant模块在
MyConfig.pm
常量中声明,然后将其导出。