How do I read two items at a time in a Perl foreach loop?

前端 未结 19 1643
你的背包
你的背包 2020-12-14 15:12

What I\'m looking for is something like:

@list = qw(1 2 3 4 5 6);
foreach (@list) {
  #perl magic goes here 
  print \"i: $i, j:$j\\n\";
}

19条回答
  •  一生所求
    2020-12-14 15:24

    quick solution for small arrays:

    for ( map {$_*2} 0..@list/2-1 ){
        my ($i, $j) = @list[$_,$_+1];
        print "i: $i, j:$j\n";
    }
    

    some kind oneliner

    data:

    @v = (a=>1, b=>2, c=>3);
    

    this

    print join ', ', map{sprintf '%s:%s', $v[$_], $v[$_+1]} grep {!($_%2)} 0..$#v
    

    or somthing like this

    print join ', ', map {sprintf '%s:%s', @v[$_,$_+1]} map {$_*2} 0..@v/2-1;
    

    result is same

    a:1, b:2, c:3
    

提交回复
热议问题