从模块获取哈希到主要的Perl代码

时间:2012-09-15 14:20:10

标签: perl hash module

这是我第一次使用模块。我试图将模块中存在的哈希的内容检索到主perl代码中。

以下是模块DRUG.pm

package DRUG;
require Exporter;

our @ISA = qw(Exporter);
our @EXPORT = qw(%DRUG);

%DRUG = (
    'warfarin ' => 1,
    'midazolam ' => 1,
    'acebutolol ' => 1,
);

这是主程序,试图访问模块中存在的哈希

use warnings;
use strict;
use DRUG;

foreach my $nme (keys %DRUG){
print "$nme\n";
}

我无法从模块获取哈希信息,也无法在主perl代码中打印该哈希值。

有人可以帮助我吗?

感谢

2 个答案:

答案 0 :(得分:3)

不应该

use DrugNames;

use DRUG;

你需要在DRUGS.pm结束时1;

答案 1 :(得分:1)

虽然使用Exporter来简化DRUG的内容很简单, 使用“访问者”方法通常是首选。

这样做的好处是,当前的名称空间不会被包中的变量“污染”。

此外,如果您不希望更改内容,请考虑使用变量Readonly。

file main.pl

`

use warnings;
use strict;
use DRUG;

my $drug = DRUG->get_drug();
foreach my $nme (keys %$drug){
    print "$nme\n";
}

`

文件DRUG.pm

`

package DRUG;
use strict;
use Readonly;

Readonly my $DRUG => {
    'warfarin ' => 1,
    'midazolam ' => 1,
    'acebutolol ' => 1,
};

sub get_drug{
    return $DRUG;
}

1;

`