#!/usr/bin/perl -w use strict; my $fn1=shift; my $fn2=shift; my $d=20; my $sync=50; my ($i1,$i2,$f1,$f2,$t1,$t2); my (@l1,@l2); my $i = 0; for (`cat $fn1`){ if(/\{(\d+)\}\{(\d+)\}(.*)/){ push(@l1,[$1,$2,$3]);} } for (`cat $fn2`){ if(/\{(\d+)\}\{(\d+)\}(.*)/){ push(@l2,[$1,$2,$3]);} } open (F1,">$fn1.sync")or die; open (F2,">$fn2.sync")or die; print scalar(@l1),"\n"; print scalar(@l2),"\n"; while(@l1 and @l2 ){ ($i1,$f1,$t1)=($l1[0][0],$l1[0][1],$l1[0][2]); ($i2,$f2,$t2)=($l2[0][0],$l2[0][1],$l2[0][2]); if($i1 - $d < $i2 && $f1+$d > $f2 or $i2 - $d < $i1 && $f2+$d > $f1) { print F1 "{$i1}{$f1}$t1\n"; print F2 "{$i2}{$f2}$t2\n"; $i++; print("$t1=====$t2\n");shift(@l1);shift(@l2); } elsif($i1 < $i2 ){ print F1 "{$i1}{$f1}$t1\n"; print("$t1=====\n"); if( $i2 - $f1 > $sync){ print F1 "-" x 20 , "\n"; print F2 "-" x 20 , "\n"; print "-" x 20 , "\n"} shift(@l1); } else{ print F2 "{$i2}{$f2}$t2\n"; print("=====$t2\n"); if( $i1 - $f2 > $sync){ print F1 "-" x 20 , "\n"; print F2 "-" x 20 , "\n"; print "-" x 20 , "\n"} shift(@l2); } #print STDERR ($l1[0][0]," ",$l2[0][0], "\n") ; #print ( max($f1,$f2), "\n") ; if(@l1 && @l2 && min($l1[0][0],$l2[0][0])-max($f1,$f2) > $sync){ print F1 "-" x 20 , "\n"; print F2 "-" x 20 , "\n"; print "-" x 20 , "\n"} } sub max{ ($_[0] > $_[1]) ? $_[0] : $_[1] } sub min{ ($_[0] < $_[1]) ? $_[0] : $_[1] } print STDERR "number or align. $i\n";