首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >perl中嵌套的foreach循环只循环一次

问perl中嵌套的foreach循环只循环一次
EN

Stack Overflow用户
提问于 2010-06-22 00:43:00
回答 1查看 3.8K关注 0票数 2

我已经编写了一个perl脚本,用于打开包含列表的两个文件。我想在第一个列表中查找不在第二个列表中的项目。该脚本使用两个foreach循环。外部循环遍历第一个列表的每一行,提取必要的项目信息。内部循环遍历第二个列表,提取项目信息,然后将该信息与第一个列表中的项目进行比较。

因此,这个想法是,对于第一个列表中的每个项目,脚本将遍历第二个列表中的所有项目,以查找匹配项。问题是,内部foreach循环只循环一次。在PHP语言中,当在嵌套的while循环中遍历MySQL表时,我也遇到了同样的问题。解决方案是为外部循环的每次迭代使用mysql_data_seek重置mysql数据的索引。如何在perl中使用文件句柄完成此操作?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-06-22 00:49:56

如果您的内部循环是一个文件句柄迭代器,那么您将需要在每次到达它时重置它(例如,通过关闭并重新打开该文件)。

代码语言:javascript
复制
foreach my $outer (@outer) {
   open INNER, '<', $inner_file;   # <--- need to add this
   while (my $inner = <INNER>) {
      ...
   }
   close INNER;                    # <--- optional with global scope filehandle
}

或者,如果可以节省内存,可以将文件句柄输出复制到循环外部的数组中,然后迭代该数组。

代码语言:javascript
复制
open INNER, '<', $inner_file;
my @INNER = <INNER>;
close INNER;

foreach my $outer (@outer) {
    foreach my $inner (@INNER) {
       ...
    }
}
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3086576

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档