私はPerlに助けが必要です。キーが呼び出されるたびに異なる値を出力する
私はIDのリストを持っています&ファイル内の対応する値。各IDはハッシュのハッシュでキーとして機能するため、各キーに複数の値があります。私は2番目のファイルを開こうとしています&キーに遭遇するたびに別の値を割り当てます。これは私がこれまで持っているものです:
このコードでは入力ファイル&がハッシュのハッシュを作成します。 $ protはキーです& $ dirは値です。各キーには複数の値があります。コードの第2部分において
open (IN, "file_name");
while (<IN>)
{
($prot, $dir) = split;
push (@{$dir{$prot}}, $dir);
}
、Iは、ファイルの各行を読みたい&キーとして行の最初の列を使用して別の値を割り当てます。それぞれのキーは、別の値を印刷したいと思うインスタンスごとに、2回目のファイル&に複数回表示されます。
open (FH, "results_file");
while (<FH>)
{
chomp;
@a=split;
$prot=$a[1];
foreach (values %dir)
{print "$a[1]"."\t"."@{$dir{$prot}}"."\n";}
}
現在、コードが書き込まれる方法は、キーに遭遇したときに各キーのすべての値を出力します。
ご協力いただきありがとうございます!
編集:
最初の入力ファイルが
BC_123456 dir_6789
BC_456789 dir_3456
BC_234689 dir_1298
BC_123456 dir_3987
BC_876432 dir_7642
あなたは、入力ファイルのサンプルを提供することはできますか? Data :: Dumperを使用する場合。 Dumper($ dir)を印刷します。あなたの最初の例の終わりに、期待どおりのデータ構造が見えますか? – mp3
最初の入力ファイルのサンプルを追加しました。私が配列のハッシュに入れた後、データ構造は私が期待したように見えます。 – sapo42
私はあなたが "異なる値を割り当てる"方法と苦労しています。あなたは「最初の列」と言っていますが、2番目の列を使用します(分割からの配列のインデックスはゼロベースです)。あなたのハッシュの配列に異なる値を割り当てたいですか?または印刷目的のために一時的に値を割り当てるだけですか? – mp3