#!/usr/bin/perl -w use strict qw(refs vars); our %s; foreach my $ab (qw(0 1)) { open F, "zcat $ARGV[$ab] |" or die $!; while () { my @l= split /\t/, $_; next unless length $l[2]; $l[3]='1001' if $l[3] eq '>1000'; my $k= sprintf "%5d\t%-23s", $l[2], $l[0]; $s{$k} ||= [ 0,0 ]; $s{$k}[$ab]= $l[3]; } close F or die $!; } print "total rows: ", (scalar keys %s), "\n"; foreach my $k (sort keys %s) { my @r= @{ $s{$k} }; my $whynot= !defined($r[0]) ? 'ADD' : !defined($r[1]) ? 'DEL' : $r[0] != $r[1] ? (sprintf "qt %4d",($r[1]-$r[0])) : undef; next unless $whynot; print $whynot,"\t",$k; print "\t", defined($_) ? $_ : "-" foreach @r; print "\n"; }