本帖最后由 rubyish 于 2013-01-22 05:04 编辑
文件A:- a,b,e
- 4,6,9,3
- 张三,AB
- q,w,e,r
- x,y,z
复制代码 文件B:- 3,4,6,9
- b,c,a
- AB,张三
- a,b,c,d,e
- q,w,e
- e,a,b
复制代码- #!/usr/bin/perl
- use 5.016;
- my %b;
- my ( $a, $b ) = map { open my ($f), $_; $f } qw/A B/;
- while (<$b>) {
- chomp;
- $b{"B:$.-$_"} = { map { $_, 1 } split /,/ };
- }
- while (<$a>) {
- chomp;
- my @a = split /,/;
- my @s = grep same( \@a, $b{$_} ), keys %b;
- say "A:$.-$_\t ", @s ? "= " . join( ' & ', @s ) : '与B文件不相等';
- }
- sub same {
- my ( $x, $y ) = @_;
- my $y2 = keys %$y;
- my $min = @$x > $y2 ? $y2 : @$x;
- $min == grep( { $y->{$_} } @$x ) ? 1 : 0;
- }
复制代码- A:1-a,b,e = B:6-e,a,b & B:4-a,b,c,d,e
- A:2-4,6,9,3 = B:1-3,4,6,9
- A:3-张三,AB = B:3-AB,张三
- A:4-q,w,e,r = B:5-q,w,e
- A:5-x,y,z 与B文件不相等
复制代码 |