http://qs321.pair.com?node_id=1101617


in reply to Re: Perl nested loop to print out two arrays n number of times in different patterns
in thread Perl nested loop to print out two arrays n number of times in different patterns

If instead of using array indexes you use the actual array values is saves the bother of having to save the current outer loop value. Anonymonk makes a useful point about meaningful variable names.

$ perl -Mstrict -Mwarnings -E ' my @nums = qw{ 1 2 3 }; my @ltrs = qw{ a b c }; my $iters = 2; for my $iter ( 1 .. $iters ) { for my $num ( @nums ) { for my $ltr ( @ltrs ) { say qq{$num$ltr}; } } }' 1a 1b 1c 2a 2b 2c 3a 3b 3c 1a 1b 1c 2a 2b 2c 3a 3b 3c $

Another way to do this would be to localise the list separator and use glob and the list multiplier in a do block.

$ perl -Mstrict -Mwarnings -E ' my @nums = qw{ 1 2 3 }; my @ltrs = qw{ a b c }; my $iter = 2; say for do { local $" = q{,}; ( glob qq{{@nums}{@ltrs}} ) x $iter; };' 1a 1b 1c 2a 2b 2c 3a 3b 3c 1a 1b 1c 2a 2b 2c 3a 3b 3c $

I hope this is of interest.

Cheers,

JohnGG