Perl:使用glob对具有用户定义长度的数组中的值进行排列

Perl:使用glob对具有用户定义长度的数组中的值进行排列,perl,permutation,Perl,Permutation,我刚读过 和 我想用数组中用户定义的值长度创建所有可能的组合 帕尔蒙克斯是这样做的: @a= glob "{a,b,c,d,e,1,2,3,4,5}"x 2; for(@a){print "$_ "} 这很好,但是我想使用数组而不是“{a,b,c,d,e,1,2,3,4,5}” 我试过这个: @a= glob @my_array x $userinput ; for(@a){print "$_ "} 但它不起作用,我怎么能做到?或者如何在Algorithm::Permute中限制排列的长

我刚读过

我想用数组中用户定义的值长度创建所有可能的组合

帕尔蒙克斯是这样做的:

@a= glob "{a,b,c,d,e,1,2,3,4,5}"x 2;
for(@a){print "$_ "}
这很好,但是我想使用数组而不是
“{a,b,c,d,e,1,2,3,4,5}”

我试过这个:

@a= glob @my_array x $userinput ;
for(@a){print "$_ "}

但它不起作用,我怎么能做到?或者如何在Algorithm::Permute中限制排列的长度?

只需从数组生成字符串:

my @array = ( 'a' .. 'e', 1 .. 5 );
my $stringified = join ',', @array;
my @a = glob "{$stringified}" x 2;

say 0+@a;             # Prints '100';
say join ', ', @a;    # 'aa, ab, ac, ad ... 53, 54, 55'

也可以使用CPAN模块。比如:


嗯,它是如何工作的,第一个值丢失了,''丢失了,第一个{没有出现:>啊,好的,我知道了…但是我的数组从一个文本文件中获取值,这些值是a-Z,a-Z,0-9和“”,“”-“-我认为这是导致错误的原因?
use List::Gen 'cartesian';

my @permutations = cartesian { join '', @_ } map [ $_ ], ( 'a'..'e', 1..5 ) ;