1

这是我第一次使用模块。我正在尝试将模块中存在的哈希内容检索到主 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 代码中打印该哈希。

有人可以帮助我吗?

谢谢

4

2 回答 2

3

不应该

use DrugNames;

use DRUG;

你需要1;在 DRUGS.pm 结尾

于 2012-09-15T14:26:09.867 回答
1

虽然使用 Exporter 使 DRUG 的内容可用很简单,但通常首选使用“访问器”方法。

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

此外,如果您不希望更改内容,请考虑将变量设为只读。

文件 main.pl

`

use warnings;
use strict;
use DRUG;

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

`

文件药物.pm

`

package DRUG;
use strict;
use Readonly;

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

sub get_drug{
    return $DRUG;
}

1;

`

于 2012-09-16T00:22:08.010 回答