sub DoPermuteArray { my @array = @{ $_[0] }; my @permuted; eval (&PermuteArray(['1','1','1','1','-','--'],[],\@permuted)); return @permuted; } sub PermuteArray { # taken from the perl FAQ my @items = @{ $_[0] }; my @perms = @{ $_[1] }; my $permuted = $_[2]; my @return; unless (@items) { push (@$permuted,[@perms]); } else { my(@newitems,@newperms,$i); foreach $i (0 .. $#items) { @newitems = @items; @newperms = @perms; unshift(@newperms, splice(@newitems, $i, 1)); &PermuteArray ([@newitems], [@newperms]); } } }