2016-06-27 15 views
-4

大きなプログラムの一環として、ハッシュがあります。私は鍵を印刷するプログラムをテストしていますが、それらはすべての重複をしている、印刷中のダブルハッシュエントリ

while (my $line = <SEQ>) { 

    chomp $line; 
    $line =~ s/>//; 

    my (@split1) = split("\t", $line); 

    foreach my $chr (keys %position) { 

    #print Dumper \%position; 
    print "$chr\n"; 

    foreach my $pos (sort keys %{ $position{$chr} }) { 

     if ($split1[0] =~ /$chr/) { 
      #print "$chr\t$pos\n"; 
     } 
    } 
    } 
} 

%positionがネストされたハッシュである理由私はprint "$chr\n";上のキーを印刷するとき、彼らはすべて倍増している、知らないと私はしないでください理由を理解する。あなたが印刷されますwhile内部foreachループを持って

my %data; 
while(<DATA>){ 
    chomp; 
    my ($chr, $seq) = split; 
    $data{$chr} = $seq; 
} 

print Dumper \%data; 
+0

あなたが 'SEQ'ファイルハンドルから読み取ったデータはどのように見えますか? –

+0

SEQは次のようになります:> chr1 \ tACTGTAGTCTCATCCTAT ... \ n> chr2 \ tACGTAGCTAGT .... \ nなど – BlueStarry

+1

ファイルの例をあなたの質問に編集できますか?コメント欄で読むのは難しいです。 –

答えて

0

スタートに

>chr1\tACTGTAGTCTCATCCTAT... 
>chr2\tACGTAGCTAGT.... 

ので:

ファイルハンドルSEQに開かれたが、このようになります。すべての入力行に対して%positionハッシュのすべてのキー

これは、あなたが説明しているような症状を引き起こします。それはあなたが探しているものですか?

+0

質問に記載されている問題を解決するにはどうすればよいですか? – Borodin

+0

あなたの答えはボロディンが質問を解決しました – BlueStarry

+0

@BlueStarry - 誰に今何の答えがありますか? – fugu