这篇文章给大家分享的是有关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); next if($a ne $chr); print "1\n" if($line[0] eq "BjuB010898"); if(($start >= $b) && ($end <= $c)){ print OUT $_; last; } } }
主要就是在一个循环中使用while和each遍历哈希,然而结果总是少了一些数据,后来将哈希改为数组,for循环数组后就没问题了。
网上查询原因才知道用 while 循环 + each 函数遍历哈希表的时候,如果提前跳出了while循环,那么下次再接着用 each 函数遍历该哈希表的时候,会从上次已经遍历过的关键字的下一个关键字处开始遍历,因此就会漏掉很多的数据。
因此在使用while遍历hash时,最好不要将其嵌套在一个循环中。
感谢各位的阅读!关于“perl中while循环+each函数遍历哈希易错点是什么”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。