这样的事情怎么样:
#!/usr/bin/perluse strict;use warnings;my @list1 = qw(1 2);my @list2 = qw(3 4);my @list3 = qw(5 6);# Calculate the Cartesian Productmy @cp = cart_prod(@list1, @list2, @list3);# Print the resultforeach my $elem (@cp) { print join(' ', @$elem), "n";}sub cart_prod { my @sets = @_; my @result; my $result_elems = 1; # Calculate the number of elements needed in the result map { $result_elems *= scalar @$_ } @sets; return undef if $result_elems == 0; # Go through each set and add the appropriate element # to each element of the result my $scale_factor = $result_elems; foreach my $set (@sets) { my $set_elems = scalar @$set; # Elements in this set $scale_factor /= $set_elems; foreach my $i (0 .. $result_elems - 1) { # Calculate the set element to place in this position # of the result set. my $pos = $i / $scale_factor % $set_elems; push @{$result[$i]}, $$set[ $pos ]; } } return @result;}产生以下输出:
1 3 51 3 61 4 51 4 62 3 52 3 62 4 52 4 6



