该Perl解决方案利用glob函数。在此解决方案中使用时,它将产生“无关”值的笛卡尔乘积(“ 0”和“ 1”)。 (我为glob链接的文档末尾有一个示例。)
打印出$str
的代码行可能会删除;它只是在那里显示要被字符串化的字符串的样子。
结果是OP所需要的。
#!/usr/bin/perl
use strict;
use warnings;
while (<>) {
display($_);
}
sub display {
my $str = shift;
$str =~ s/X/{0,1}/g;
print "\t$str"; # to visualize $str
print "$_\n" for glob $str;
}
对于给定的输入文件(通过stdin传递或以arugment命名),输出如下:
010101{0,1}0{0,1}10
01010100010
01010100110
01010110010
01010110110
{0,1}1111111111
01111111111
11111111111