#!/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 "%-23s\t%-31s", $l[0], $l[1]; $s{$k}[$ab*2]= $l[2]; $s{$k}[$ab*2+1]= $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[2]) ? 'DEL' : $r[0] != $r[2] ? 'pri' : $r[1] != $r[3] ? (sprintf "qt %4d",($r[3]-$r[1])) : undef; next unless $whynot; print $whynot,"\t",$k; print "\t", defined($_) ? $_ : "-" foreach @r; print "\n"; }