快速提问:
我想使用以下一个/一个脚本来确定目录中不同文件的所有组合之间的公共行(该目录有25个文件)。
$ perl -ne 'print if ($seen{$_} .= @ARGV) =~ /10$/' file1 file2
或
$ comm file1 file2
但是,我想在所有可能的文件双组合上使用该命令(在我的情况下,这将是300个独特的文件组合)。
有没有办法修改此命令行脚本以同时考虑所有可能的组合?
提前感谢您的帮助。
答案 0 :(得分:4)
有一个CPAN模块可以有效地生成组合:Algorithm::Combinatorics
use strict;
use warnings;
use Algorithm::Combinatorics qw(combinations);
my @files = `ls <DIRECTORY>`;
my $iterator = combinations(\@files, 2);
while ( my $comb = $iterator->next ) {
my ($file1, $file2) = @$comb;
// call comparison script here
}
可能有一种更好的方法可以解决这个问题,而不是你想要做的事情,但这可以解决你的问题。