--- /dev/null
+#! /usr/bin/perl
+use strict;
+use warnings;
+local *F;
+my $ta="/tmp/upsc-log-diff.".$$."a";
+my $tb="/tmp/upsc-log-diff.".$$."b";
+unlink $ta; unlink $tb;
+END {
+ unlink $ta; unlink $tb;
+}
+my $F="/var/log/upsc.log";
+open F,$F or die "$F: $!";
+my $prev;
+my $this="";
+while (<F>) {
+ chomp;
+ if (!/^$/) {
+ $this.="$_\n";
+ next;
+ }
+ if ($prev) {
+ local *TA;
+ local *TB;
+ open TA,">$ta" or die "$ta: $!";
+ open TB,">$tb" or die "$tb: $!";
+ print TA $prev or die "$ta: $!";
+ print TB $this or die "$tb: $!";
+ close TA or die "$ta: $!";
+ close TB or die "$ta: $!";
+ local *TD;
+ my $td="diff -u $ta $tb|";
+ open TD,$td or die "$td: $!";
+ <TD>=~/^\Q--- / or die $_;
+ <TD>=~/^\Q+++ / or die $_;
+ while (<TD>) {
+ next if /^[@ ]/;
+ print;
+ }
+ close TD; # or die "$td: $!";
+ print "\n";
+ }
+ $prev=$this;
+ $this="";
+}
+die $this if $this;