是否有一种标准方法来编写模块以保存要包含在每个其他包中的全局应用程序参数?例如: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 行尝试修改只读值。
作为替代方案,您可以在
MyConfig.pm
中声明使用 constant 的常量模块,然后导出那些。
关于perl - 如何在 Perl 中的不同包之间共享全局值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2109581/