[root@devel3 Storable.patch]# cat /usr/bin/bdiff.pl #!/usr/bin/perl use Algorithm::Diff qw(traverse_sequences); my ( $f1, $f2 ) = @ARGV; open $fh1, $f1 or die $!; open $fh2, $f2 or die $!; local $/; my $seq1 = [split //, <$fh1>]; my $seq2 = [split //, <$fh2>]; my (@match,@d1, @d2) = ((),(),()); traverse_sequences( $seq1, $seq2, { MATCH => sub { push @match, $seq1->[$_[0]] }, DISCARD_A => sub { push @d1, printable2($_[0])." : - ".printable($seq1->[$_[0]]) }, DISCARD_B => sub { push @d2, printable2($_[1])." : + ".printable($seq2->[$_[1]]) }, }); sub printable { sprintf "%s 0x%02X", ord($_[0])>32?$_[0]:'.',ord $_[0] } sub printable2 { sprintf "%08d 0x%08X", $_[0],$_[0] } print join "\n", @d1,@d2,"\n"; [root@devel3 Storable.patch]# bdiff.pl store.original store.patch 00004096 0x00001000 : - s 0x73 00004097 0x00001001 : - s 0x73 00004098 0x00001002 : - i 0x69 00004099 0x00001003 : - o 0x6F 00004100 0x00001004 : - n 0x6E 00004101 0x00001005 : - . 0x06 00004102 0x00001006 : - õ 0xF5 00004944 0x00001350 : + . 0x05 [root@devel3 Storable.patch]#