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";
}
returns:
i:1, j:2
i:3, j:4
i:5, j:6
In response to a very good suggestion below, I need to specify that this script will run on someone else's build server, and I'm not allowed to use any modules from CPAN. Standard Perl only.
I believe the proper way to do this is to use natatime, from List::MoreUtils:
from the docs:
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.
Example:
my @x = ('a' .. 'g');
my $it = natatime 3, @x;
while (my @vals = $it->())
{
print "@vals\n";
}
This prints
a b c d e f g
The implementation of List::MoreUtils::natatime
:
sub natatime ($@)
{
my $n = shift;
my @list = @_;
return sub
{
return splice @list, 0, $n;
}
}