加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

如何在Perl中的不同包之间共享全局值?

发布时间:2020-12-15 22:06:53 所属栏目:大数据 来源:网络整理
导读:是否有一种标准方法来编写模块以保存全局应用程序参数以包含在每个其他包中?例如:使用Config;? 一个只包含我们变量的简单包?那些只读变量怎么样? 解决方法 已经有一个 standard Config module,所以选择一个不同的名称. 假设您有MyConfig.pm,其中包含以
是否有一种标准方法来编写模块以保存全局应用程序参数以包含在每个其他包中?例如:使用Config;?

一个只包含我们变量的简单包?那些只读变量怎么样?

解决方法

已经有一个 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::Foon";

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 = $Foon";

print $Baz{quux},"n";

你可以用MyConfig.pm添加一个只读标量

our $READONLY;
*READONLY = 42;

这在perlmod中记录.

将它添加到@MyConfig :: EXPORT后,您可以尝试

$READONLY = 3;

在一个不同的模块中,但你会得到

Modification of a read-only value attempted at ./program line 12.

作为替代方案,您可以使用constant模块在MyConfig.pm常量中声明,然后导出它们.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读