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

发布于 2024-12-25 01:50:20 字数 759 浏览 0 评论 0原文

我刚刚读过

如何生成Perl 中的数组? http://www.perlmonks.org/?node_id=503904https://metacpan.org/module/Algorithm::Permute

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

perlmonks 是这样做的:

@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 内的排列长度?

I just read

How can I generate all permutations of an array in Perl?
http://www.perlmonks.org/?node_id=503904
and
https://metacpan.org/module/Algorithm::Permute

I want to create all possible combinations with a userdefined length of values in an array.

perlmonks did it like this:

@a= glob "{a,b,c,d,e,1,2,3,4,5}"x 2;
for(@a){print "$_ "}

and this works fine, but instead of "{a,b,c,d,e,1,2,3,4,5}" I would like to use an array

i tried this:

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

but it didn't work, how can I do that? Or how can I limit the length of permutation within Algorithm::Permute ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

っ〆星空下的拥抱 2025-01-01 01:50:20

只需从数组生成字符串即可:

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 模块。就像List::Gen

use List::Gen 'cartesian';

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

Simply generate the string from the array:

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'

One could also use a CPAN module. Like List::Gen:

use List::Gen 'cartesian';

my @permutations = cartesian { join '', @_ } map [ $_ ], ( 'a'..'e', 1..5 ) ;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文