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

前端之家收集整理的这篇文章主要介绍了perl – 如何在另一个模块中使用哈希前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
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

解决方法

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

@H_403_14@

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

unsugared@H_403_14@

模@H_403_14@

@H_403_14@

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

程序@H_403_14@

@H_403_14@

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

驼鹿@H_403_14@

模@H_403_14@

@H_403_14@

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

程序@H_403_14@

@H_403_14@

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

子::出口商@H_403_14@

模@H_403_14@

@H_403_14@

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

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

程序@H_403_14@

@H_403_14@

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

出口商@H_403_14@

模@H_403_14@

@H_403_14@

package Test1;
use parent 'Exporter';

our @EXPORT_OK = qw(member_data);

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

猜你在找的Perl相关文章