#!/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 () { 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; }