| #!/usr/bin/perl |
| |
| my ($l1, $l2, @diffargs); |
| @diffargs = (); |
| |
| foreach my $arg (@ARGV) { |
| if ($arg =~ /^-/) { |
| push @diffargs, $arg; |
| } elsif (defined $l1) { |
| $l2 = $arg; |
| } else { |
| $l1 = $arg; |
| } |
| } |
| |
| my $tmp1 = "/tmp/logdiff.$$.1"; |
| my $tmp2 = "/tmp/logdiff.$$.2"; |
| fixfile($l1, $tmp1); |
| fixfile($l2, $tmp2); |
| |
| system "diff", @diffargs, $tmp1, $tmp2; |
| unlink($tmp1); |
| unlink($tmp2); |
| exit; |
| |
| sub fixfile { |
| my $inf = shift; |
| my $outf = shift; |
| die "cannot find $inf" unless -f $inf; |
| open (IN, "-|", "sort \"$inf\"") or die "cannot open $inf"; |
| open (OUT, ">$outf") or die "cannot open $outf"; |
| while (<IN>) { |
| if (!/^([\.Y]\s+\S+\s+\S+)\s+(\S+)\s+(.+)/) { |
| print OUT; |
| next; |
| } |
| |
| my ($scorepath, $rules, $meta) = ($1,$2,$3); |
| my @rules = split(/,/, $rules); |
| @rules = sort grep { |
| $_ !~ /^AWL$/ |
| } @rules; |
| $rules = join(',', @rules); |
| |
| $meta =~ s/\bscantime=\d+/scantime=N/gs; # frequently different |
| |
| print OUT "$scorepath $rules $meta\n"; |
| } |
| close IN; |
| close OUT; |
| } |
| |