是否存在编码模块的标准方法,以保存要包含在其他所有程序包中的全局应用程序参数?例如: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常量中声明,然后将其导出。

07-24 09:23