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

perl – 如何在另一个模块中使用哈希

发布时间:2020-12-16 06:11:48 所属栏目:大数据 来源:网络整理
导读:for Ex : package test1 ; my %hash = ( a= 10,b = 30 ) ;1;in Script : use test1 ;print %hash ; # How to make this avilable in script without sub 解决方法 良好的编程习惯规定您不允许外部代码直接混淆模块的数据,而是必须通过中介,例如访问器例程. T
for Ex : 
package test1 ; 

my %hash = ( a=> 10,b => 30 ) ;

1;

in Script : 

use test1 ;

print %hash ;  # How to  make this avilable in script without sub

解决方法

良好的编程习惯规定您不允许外部代码直接混淆模块的数据,而是必须通过中介,例如访问器例程.

TIMTOWTDI,有和没有出口. Moose示例看起来很长,但是这个示例还允许设置数据,而不是仅仅从Test1读取数据,其他三个示例需要相当多的额外代码来处理这种情况.

unsugared

package Test1;
{
    my %hash = (a => 10,b => 30);
    sub member_data { return %hash; }
}
1;

程序

use Test1 qw();
Test1::member_data; # returns (a => 10,b => 30)

驼鹿

package Test1;
use Moose;
has 'member_data' => (is => 'rw',isa => 'HashRef',default => sub { return {a => 10,b => 30}; });
1;

程序

use Test1 qw();
Test1->new->member_data; # returns {a => 10,b => 30}
# can also set/write data!  ->member_data(%something_new)

子::出口商

package Test1;
use Sub::Exporter -setup => { exports => [ qw(member_data) ] };

{
    my %hash = (a => 10,b => 30);
    sub member_data { return %hash; }
}
1;

程序

use Test1 qw(member_data);
member_data; # returns (a => 10,b => 30)

出口商

package Test1;
use parent 'Exporter';

our @EXPORT_OK = qw(member_data);

{
    my %hash = (a => 10,b => 30)

(编辑:李大同)

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

    推荐文章
      热点阅读