perl中while循环+each函数遍历哈希易错点是什么
这篇文章给大家分享的是有关perl中while循环+each函数遍历哈希易错点是什么的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
之前在使用perl时遇到一个比较奇怪的错误,程序大概是这样的:while(<IN>){my @line = split("\t",$_);my ($chr,$start,$end) = split(/[\:\-]/,$line[2]);while(my($key,$value) = eac...
之前在使用perl时遇到一个比较奇怪的错误,程序大概是这样的:
while(<IN>){my@line=split("\t",$_);my($chr,$start,$end)=split(/[\:\-]/,$line[2]);while(my($key,$value)=each%region){my($a,$b,$c)=split(/[\:\-]/,$key);nextif($ane$chr);print"1\n"if($line[0]eq"BjuB010898");if(($start>=$b)&&($end<=$c)){printOUT$_;last;}}}
主要就是在一个循环中使用while和each遍历哈希,然而结果总是少了一些数据,后来将哈希改为数组,for循环数组后就没问题了。
网上查询原因才知道用 while 循环 + each 函数遍历哈希表的时候,如果提前跳出了while循环,那么下次再接着用 each 函数遍历该哈希表的时候,会从上次已经遍历过的关键字的下一个关键字处开始遍历,因此就会漏掉很多的数据。
因此在使用while遍历hash时,最好不要将其嵌套在一个循环中。
感谢各位的阅读!关于“perl中while循环+each函数遍历哈希易错点是什么”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。