chiark / gitweb /
canon: print total rows
[ypp-sc-tools.main.git] / yarrg / canon
1 #!/usr/bin/perl -w
2 use strict qw(refs vars);
3 our %s;
4 foreach my $ab (qw(0 1)) {
5     open F, "zcat $ARGV[$ab] |" or die $!;
6     while (<F>) {
7         my @l= split /\t/, $_;
8         next unless length $l[2];
9         $l[3]='1001' if $l[3] eq '>1000';
10         my $k= sprintf "%-23s\t%-31s", $l[0], $l[1];
11         $s{$k}[$ab*2]= $l[2];
12         $s{$k}[$ab*2+1]= $l[3];
13     }
14     close F or die $!;
15 }
16 print "total rows: ", (scalar keys %s), "\n";
17 foreach my $k (sort keys %s) {
18     my @r= @{ $s{$k} };
19     my $whynot=
20         !defined($r[0]) ? 'ADD' :
21         !defined($r[2]) ? 'DEL' :
22         $r[0] != $r[2] ? 'pri' :
23         $r[1] != $r[3] ? (sprintf "qt %4d",($r[3]-$r[1])) :
24         undef;
25     next unless $whynot;
26     print $whynot,"\t",$k;
27     print "\t", defined($_) ? $_ : "-" foreach @r;
28     print "\n";
29 }