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
In reply to Re^2: Perl nested loop to print out two arrays n number of times in different patterns
by johngg
in thread Perl nested loop to print out two arrays n number of times in different patterns
by arty32l
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |