我是Perl新手,並且有關使用散列的問題。雖然之前發佈過類似的問題,但沒有一個與我的問題有關。將字符串添加到散列值的末尾
我有一個fasta文件,其中包含多個不同長度的序列,並且希望在每個fasta條目的末尾添加一個字符串(本例中爲N),直到所有序列的長度相同。此時,我可以讀取fasta文件,並將每個序列作爲字符串返回(但也可以作爲數組完成)爲散列值。關鍵元素是fasta文件的相應標題。
我的代碼如下:
###### calculate the length of each hash value and store the highest value in $max
my $length;
my $max = 0;
my $addN = "N";
foreach $name (keys %seq) {
$length = length($seq{$name});
if ($max < $length) {
$max = $length;
} else { next }
print $max,"\n";
while (length ($seq{$name}) < $max) {
$seq{$name} .= $addN;
}
foreach $name (keys %seq) {
print $seq{$name};
print "\n";
}
}
這裏的問題是,這個代碼的輸出是完全一樣的輸入,例如,
INPUT:
>fasta1
AAAAAAAAA
>fasta2
AA
OUTPUT
>fasta1
AAAAAAAAA
>fasta2
AA
,我想等相關的輸出這個:
>fasta1
AAAAAAAAA
>fasta2
AANNNNNNN
你能幫我完成這個任務嗎?
您的代碼在重新格式化後顯得很明顯。發佈之前是否做過簡化,導致嵌套錯誤? – Mat
對於我來說,如何讀取樣本輸入並不明顯 - 假定它以某種方式進入%seq散列?如果你能解釋,可能會有所幫助。 –