首页 > 解决方案 > perl 循环遍历多个数组

问题描述

我需要的是遍历未知数量的未知长度的数组。假设我有这些数据

my @aAry = qw ( a b c );
my @bAry = qw ( d );
my @cAry = qw ( e f g h );

可能还有更多。我会为知道数量做的是:

for (my $i = 0; $i < scalar(@aAry); $i++) {
  for (my $j = 0; $j < scalar(@bAry); $j++) {
    for (my $k = 0; $k < scalar(@cAry); $k++) {
      $str = $aAry[$i].'.'.$bAry[$j].'.'.$cAry[$k];
      print "${str}\n";
    }
  }
}

结果将是每个列表中每个项目的所有可能组合,3 宽。

a.d.e , a.d.f, a.d.g, a.d.h, b.d.e, b.d.f, b.d.g, b.d.h, c.d.e, c.d.f, c.d.g, c.d.h

3 个宽(3 个数组)* 4(最宽的数组)= 12 个组合可能有 2 到 10 个数组,宽度可能从 1 到 200 宽,我需要在 N 个 M 宽的数组中生成所有可能的组合 I'我认为我可以将它们全部放入一个多维数组中,然后跳过

my @mdARY = ( qw (a b c)
            , qw ( d )
            , qw ( e )
            );
for ($i = 0; $i < scalar(@mdARY); $i++) {
  for ($j = 0; $j < scalar(@{$mdARY[$i]}); $j++) {

但这也行不通。也许递归???

标签: perl

解决方案


推荐阅读