这是我第一次使用模块。我试图将模块中存在的哈希的内容检索到主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代码中打印该哈希值。
有人可以帮助我吗?
感谢
答案 0 :(得分:3)
不应该
use DrugNames;
是
use DRUG;
你需要在DRUGS.pm结束时1;
答案 1 :(得分:1)
虽然使用Exporter来简化DRUG的内容很简单, 使用“访问者”方法通常是首选。
这样做的好处是,当前的名称空间不会被包中的变量“污染”。
此外,如果您不希望更改内容,请考虑使用变量Readonly。
`
use warnings;
use strict;
use DRUG;
my $drug = DRUG->get_drug();
foreach my $nme (keys %$drug){
print "$nme\n";
}
`
`
package DRUG;
use strict;
use Readonly;
Readonly my $DRUG => {
'warfarin ' => 1,
'midazolam ' => 1,
'acebutolol ' => 1,
};
sub get_drug{
return $DRUG;
}
1;
`