作者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
1F:推 Andor:如果你不太懂++的话 最好还是不要用++ 08/29 18:41
2F:→ Andor:原因就是$order第一次回圈时++後就变成1了啊 08/29 18:42
3F:→ Andor:另外如果没理解错的话 $stop[...]-$start[...]还要-1 08/29 18:44
4F:→ Andor:$stop[...]-$start[这里的$你也漏写了order] 08/29 18:45
5F:→ Andor:用 foreach $order (0..$#start) 会比较易读和美观 08/29 18:46
6F:→ Andor:更perlish的方式是用map...这比较进阶你现在不用管它 ^^ 08/29 18:47
7F:→ Andor:sorry上面那个-1应该是+1 08/29 18:48
8F:推 FEmessenger:了解了 真的是非常感谢您的指教(拜) thank u!! 08/29 19:06