温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

perl中while循环+each函数遍历哈希易错点是什么

发布时间:2022-02-23 10:53:13 来源:亿速云 阅读:226 作者:小新 栏目:开发技术

这篇文章给大家分享的是有关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函数遍历哈希易错点是什么”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI