+ my $line = substr($_,0,29) . ' ' . substr($_,39);
+ if ( my $add = shift @pcf ) {
+ $line .= ' ' . $add;
+ }
+
+ chomp $line;
+ my @l = split(/\|/, $line);
+ my @o = split(/\|/, $last[$i] || '');
+
+ if ( $#l >= 9 ) {
+ no warnings;
+
+ $l[2] = sprintf "%-" . length($l[2]) . 's', ($bcm_desc->{ $1 }||$l[2]) if $l[1] =~ m/(\d+)/;
+ $l[8] = sprintf "%" . length($l[8]) . 's', ($bcm_desc->{ $1 }||$l[8]) if $l[9] =~ m/(\d+)/;
+
+ $mode->{ $l[1] } = [ $l[4] + 0, $l[2], $l[3] ];
+ $mode->{ $l[9] } = [ $l[6] + 0, $l[8], $l[7] ];
+ $mode->{ $l[11] } = [ $l[12], $l[13] ] if $l[13];
+ #warn "## l = ",dump(@l) if $i > 2 && $i < 5;
+ }
+
+
+ $line = join('|', @l);
+ $line .= "|" unless $line =~ m/\+$/;
+
+
+ if ( $last[$i] && $line ne $last[$i] ) {
+ $last[$i] = $line; # save before highlight
+ foreach my $i ( 0 .. $#l ) {
+ $l[$i] = "\e[33;7;1m$l[$i]\e[0m" if $l[$i] ne $o[$i];
+ }
+ $line = join('|', @l);
+ $line .= "|" unless $line =~ m/\+$/;
+ } else {
+ $last[$i] = $line;
+ }
+
+
+ $i++;
+
+ # re-create from modified data
+ print "$line\n";
+