工作,我有以下代碼:的if/else並不在Perl
if ($strand_hit eq "-" and $strand_key ne "+") {
$upstream_exonic_antisense{$key} = $hit;
}
elsif ($strand_hit eq "-" and $strand_key eq "-") {
$upstream_exonic_sense{$key} = $hit;
print "hola\n";
}
elsif ($strand_hit eq "-" and $strand_key eq ".") {
$upstream_exonic_unknown{$key} = $hit;
}
elsif ($strand_hit eq "+" and $strand_key ne "-") {
$downstream_exonic_antisense{$key} = $hit;
}
elsif ($strand_hit eq "+" and $strand_key eq "+") {
$downstream_exonic_sense{$key} = $hit;
print "hola\n";
}
elsif ($strand_hit eq "+" and $strand_key eq ".") {
$downstream_exonic_unknown{$key} = $hit;
}
elsif ($strand_hit eq ".") {
$updown_exonic_unknown{$key} = $hit;
}
else {
print $strand_key.$strand_hit."\n";
next;
}
變量$strand_hit
和$strand_key
可以+
,-
,或.
。然而,elsif(s)不工作,一切都去else
聲明......你知道爲什麼嗎?
謝謝。
我猜你已經從鍵盤輸入'$ strand_hit'和'$ strand_key',但是沒有'chomp'它們。請'使用Data :: Dumper; $ Data :: Dumper :: Useqq = 1;打印Dumper($ strand_hit,$ strand_key)'來診斷問題 – Borodin
我建議你在if打印$ strand_hit和$ strand_key的長度之前添加一個打印語句。如:print「length fo hit:」。長度($ strand_hit)。 「關鍵字長度:」.length($ strand_key)。 「\ n」 個;如果標量不完全是1的長度,則比較將不起作用。 – Glenn
length = 1 ...我應該說,如果我改變'elsif'爲一個簡單的'if'一切正常......我不知道爲什麼。 – user2886545