sub permutations { my @array = @_; #my @tmp = @_; #if ($tmp[0][1] != 0) { for (0..$#{$tmp[0]}) { push (@array, $tmp[0][$_]); } } #else { @array = @_; } if ($#array == 0) {return [ $array[0] ]; } my @results; my $element; foreach $element (0..$#array) { my @leftovers = @array; my $chosen_one = splice(@leftovers, $element, 1); foreach (&permutations(@leftovers)) { push(@results, [ $chosen_one, @{$_} ]); } } return @results; } @a = permutations($test[2]);