gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 06:56:14 25 4
gpt4 key购买 nike

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 读取数据。 ,而其他三个示例需要相当多的额外代码来处理这种情况。

不加糖的

模块

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);
sub member_data { return %hash; }
}
1;

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

关于perl - 如何使哈希在另一个模块中可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3109672/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com