作者FEmessenger ()
看板perl
標題[請益] 有關回圈
時間Tue Aug 29 18:35:32 2006
不好意思XD 我又有個問題了
是這樣的
我有一串基因序列 儲存在 $seq 裡面
另外有兩個陣列: @start:[0, 593]
@stop:[311, 599]
現在
我想要把 $seq 的第0個字母到第311個字母
以及第593個字母到第599個字母
這兩段序列挑出
以下是我的程式碼:
$order=0;
while ($order++, $order<=$#start) {
$pre_island[$order]=substr($seq, ($start[$order]), ($stop[$order]-$start[order]));
}
print @pre_island;
一直只有 $pre_island[1] 跑出來
而 $pre_island[0] 一直沒有
在我把第一行的 $order=0 改成 $order=-1後, 兩個 pre-island就可以跑出來了
我一直找不出這個迴圈哪裡有錯誤
要怎麼樣才能讓 $order 正常地從 0 開始計算呢??
拜託各位大大幫忙解答了 再次萬分感謝~~~XD
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.129.5
推 Andor:如果你不太懂++的話 最好還是不要用++ 08/29 18:41
→ Andor:原因就是$order第一次迴圈時++後就變成1了啊 08/29 18:42
→ Andor:另外如果沒理解錯的話 $stop[...]-$start[...]還要-1 08/29 18:44
→ Andor:$stop[...]-$start[這裡的$你也漏寫了order] 08/29 18:45
→ Andor:用 foreach $order (0..$#start) 會比較易讀和美觀 08/29 18:46
→ Andor:更perlish的方式是用map...這比較進階你現在不用管它 ^^ 08/29 18:47
→ Andor:sorry上面那個-1應該是+1 08/29 18:48
推 FEmessenger:瞭解了 真的是非常感謝您的指教(拜) thank u!! 08/29 19:06