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) { : } }