所以你想要
for my $s0 ($array[0], '') {
for my $s1 ($array[1], '') {
for my $s2 ($array[2], '') {
...
print(join('', $s1, $s2, $s3, ...), "\n");
...
}
}
}
当您想要任意嵌套循环时,使用Algorithm::Loops 的NestedLoops。
use Algorithm::Loops qw( NestedLoops );
NestedLoops(
[ map { $_, "" } @array ],
sub { print(join('', @_), "\n"); },
);
但您可能会注意到这些循环中的每一个都有两种状态。二进制!很少有人听到就可以做到。
my $num_bits = @array;
my $last = ~( -1 << $num_bits );
my $high_bit_mask = 1 << ( $num_bits - 1 );
for (my $i = $last; $i--; ) {
my $s = '';
my $mask = $high_bit_mask;
for my $bit_num (0..$num_bits) {
$s .= $array[$bit_num] if $i & $mask;
$mask >>= 1;
}
print("$s\n");
}