加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

如何在Perl foreach循环中一次读取两个项目?

发布时间:2020-12-15 21:25:21 所属栏目:大数据 来源:网络整理
导读:我在找什么是像: @list = qw(1 2 3 4 5 6);foreach (@list) { #perl magic goes here print "i: $i,j:$jn";} 返回: i:1,j:2i:3,j:4i:5,j:6 在下面一个非常好的建议,我需要指定这个脚本将运行在别人的构建服务器,我不允许使用任何模块从CPAN。仅限标准Pe
我在找什么是像:
@list = qw(1 2 3 4 5 6);
foreach (@list) {
  #perl magic goes here 
  print "i: $i,j:$jn";
}

返回:

i:1,j:2
i:3,j:4
i:5,j:6

在下面一个非常好的建议,我需要指定这个脚本将运行在别人的构建服务器,我不允许使用任何模块从CPAN。仅限标准Perl。

解决方法

我相信正确的方法做到这一点是使用natatime,从 List::MoreUtils:

从文档:

natatime BLOCK LIST

Creates an array iterator,for looping over an array in chunks of $n items
at a time. (n at a time,get it?). An example is probably a better
explanation than I could give in words.

例:

my @x = ('a' .. 'g');
 my $it = natatime 3,@x;
 while (my @vals = $it->())
 {
     print "@valsn";
 }

打印

a b c
d e f
g

List::MoreUtils::natatime的实施:

sub natatime ($@)
{
    my $n = shift;
    my @list = @_;

    return sub
    {
        return splice @list,$n;
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读