Same idea, but with a generator:
use strict; use warnings; sub make_generator { my ($lists) = @_; my @ranges = map { [ 0..$#$_ ] } @$lists; my $glob_string = join '\\ ', map { '{'.join(',', @$_).'}' } @ranges; return sub { local $_ = scalar glob $glob_string; return unless defined $_; my $i = 0; return [ map { $lists[$i++][$_] } split ]; } }; { my @lists = ( [ qw/A B C D E F/ ], [ qw/1 2 3 4 5 6/ ], [ qw/apple orange pomegranate grape/ ], [ qw/wolf lion dog cat cow ape whale/ ], ); my $generator = make_generator(\@lists); print(join(' ', @$_), $/) while ($_ = &$generator()); }
In reply to Re^2: generating combinations of elements of an arbitrary number of arrays
by ikegami
in thread generating combinations of elements of an arbitrary number of arrays
by mickey
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |