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

エクスポータを使用して DRUG のコンテンツを利用可能にするのは簡単ですが、「アクセサ」メソッドを使用する方が好まれることがよくあります。

これには、現在の名前空間がパッケージの変数で「汚染」されないという利点があります。

また、内容を変更したくない場合は、変数を読み取り専用にすることを検討してください。

ファイル 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;

`

于 2012-09-16T00:22:08.010 に答える