我有一个带有列表的文件,需要创建一个文件,将每行与另一行进行比较 . 例如,我的文件有这个:
AAA
BBB
CCC
DDD
EEE
我希望最终列表看起来像这样:
AAA BBB
AAA CCC
AAA DDD
AAA EEE
BBB CCC
BBB DDD
BBB EEE
CCC DDD
CCC EEE
DDD EEE
我试图在Perl中这样做,这是第一次,我遇到了一些麻烦 . 我知道你需要制作一个数组,然后拆分它,但之后我遇到了一些麻烦 .
6 回答
使用Algorithm::Combinatorics . 基于迭代器的方法比一次生成所有内容更可取 .
输出:
使用递归来编写它是很简单的 .
此代码示例演示 .
Edit
我道歉 - 我正在产生排列而不是组合 .
这段代码是正确的 .
output
看看Math::Combinatorics - 在列表上执行组合和排列
示例从CPAN复制:
取第一个字符串
从下一个位置到结束迭代数组
将下一个字符串附加到原始字符串
接下一个字符串并返回第2步
怎么样:
output:
这是使用glob的hack:
输出:
附:您可能希望使用Text::Glob::Expand或String::Glob::Permute模块而不是普通
glob()
来避免在当前工作目录中匹配文件的警告 .