[請益] 有關回圈

看板Perl作者時間19年前 (2006/08/29 18:19), 編輯推噓2(206)
留言8則, 2人參與, 最新討論串1/1
不好意思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

08/29 18:41, , 1F
如果你不太懂++的話 最好還是不要用++
08/29 18:41, 1F

08/29 18:42, , 2F
原因就是$order第一次迴圈時++後就變成1了啊
08/29 18:42, 2F

08/29 18:44, , 3F
另外如果沒理解錯的話 $stop[...]-$start[...]還要-1
08/29 18:44, 3F

08/29 18:45, , 4F
$stop[...]-$start[這裡的$你也漏寫了order]
08/29 18:45, 4F

08/29 18:46, , 5F
用 foreach $order (0..$#start) 會比較易讀和美觀
08/29 18:46, 5F

08/29 18:47, , 6F
更perlish的方式是用map...這比較進階你現在不用管它 ^^
08/29 18:47, 6F

08/29 18:48, , 7F
sorry上面那個-1應該是+1
08/29 18:48, 7F

08/29 19:06, , 8F
瞭解了 真的是非常感謝您的指教(拜) thank u!!
08/29 19:06, 8F
文章代碼(AID): #14z1Imrq (Perl)
文章代碼(AID): #14z1Imrq (Perl)