in reply to Combinations of multiple arrays
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
|
|---|