Does this do what you want?
#!/usr/bin/perl use strict; use warnings; use 5.010; sub numbers($) { my $numbers = shift; $numbers =~ s/[\00-\32]+//; my @list; foreach my $chunk ( split ',', $numbers ) { given ( $chunk ) { when ( /^\d$/ ) { push @list, $_; } when ( /^(\d+)\.\.(\d+)$/ ) { push @list, $1..$2; } default { die "what is '$_'?"; } } } @list; } sub iterator($) { my @numbers = numbers( shift ); sub { my @args = @_ or return @numbers; my @output; foreach my $n ( @numbers ) { push @output, map { "$_,$n" } @args; } @output; }; } my @output; foreach my $iterator ( map { iterator $_ } <DATA> ) { @output = &$iterator( @output ); } print map { "$_\n" } @output; __DATA__ 0,1 2..4 5..8
In reply to Re: Combinations of multiple arrays
by doug
in thread Combinations of multiple arrays
by yuri123
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |