我需要遍历未知长度的未知数量的数组。 假设我有这个数据
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宽阵列的所有可能组合 我在想,我可以将它们全部放入一个多维数组中,而只是跳过
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++) {
但这也不行。 也许递归???