Contributed by Fox
on Feb 25, 2010 at 16:54 UTC
Q&A
> arrays
Description: Taken from RosettaCode...
How do I loop over multiple arrays and print the ith element of each?
For example, looping over the arrays (a,b,c), (A,B,C) and (1,2,3) to produce the output:
aA1
bB2
cC3
Answer: How do I Loop over multiple arrays simultaneously ? contributed by Fox
And the answer from RosettaCode:
sub zip (&@)
{
my $code = shift;
my $min;
$min = $min && $#$_ > $min ? $min : $#$_ for @_;
for my $i ( 0 .. $min ) {
$code->( map $_->[$i] , @_ );
}
}
my @a1 = qw( a b c );
my @a2 = qw( A B C );
my @a3 = qw( 1 2 3 );
zip { print @_,"\n" } \( @a1, @a2, @a3 );
This implementation will stop producing items when the shortest array ends.
| Answer: How do I Loop over multiple arrays simultaneously ? contributed by jdporter use List::MoreUtils::each_array:
use List::MoreUtils qw( each_array );
my @a = qw( a b c );
my @b = qw( A B C );
my @c = qw( 1 2 3 );
my $ea = each_array( @a, @b, @c );
while ( my( $a, $b, $c ) = $ea->() ) {
print $a, $b, $c;
}
:-)
| Answer: How do I Loop over multiple arrays simultaneously? contributed by gaurav.trikha
Well, assuming that it's certain that the arrays are all the same length, just translate the statement of the problem into Perl: have an index going the length of one of them, and then use it in all of them:
my @a = qw( a b c );
my @b = qw( A B C );
my @c = qw( 1 2 3 );
for my $i ( 0 .. $#a )
{
print $a[$i], $b[$i], $c[$i];
}
|
Please (register and) log in if you wish to add an answer
Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
Read Where should I post X? if you're not absolutely sure you're posting in the right place.
Please read these before you post! —
Posts may use any of the Perl Monks Approved HTML tags:
- a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
Outside of code tags, you may need to use entities for some characters:
| |
For: |
|
Use: |
| & | | & |
| < | | < |
| > | | > |
| [ | | [ |
| ] | | ] |
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.
|
|