Perlで「配列のハッシュ」

配列のハッシュを使用すると、複数あるデータにハッシュキーでアクセスできる。


プログラム例−セットする側

# データ構造は、配列のハッシュ。
my %gene_tmp = ();
sub get_tmp()
{
    open(IN,"<$tmp_file") || die "$tmp_file open error";
 
    while(<IN>){
        chomp;
        my @rec = split(/\t/);
        my $probeID = $rec[0];
        my $locusID = $rec[23];
 
        # 配列を宣言。
        my @probe_array = ();
        # 該当keyのハッシュがあれば、配列に取得。
        if(exists($gene_tmp{$locusID})) {
            @probe_array = @{$gene_tmp{$locusID}};
        }
        # 配列にデータをpush。
        push(@probe_array, $probeID);
        # ハッシュに配列をセット。
        $gene_tmp{$locusID} = [ @probe_array ];
    }
    close(IN);
}



プログラム例−ゲットする側

if(exists(${gene_tmp{$locusID}})) {
    @probe_array = @{$gene_tmp{$locusID}};
    for my $probeID (@probe_array) {
                 :
    }
}