#! /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=""; my $line; while () { $line=$.; 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: $!"; =~/^\Q--- / or die "line $line: $_"; =~/^\Q+++ / or die "line $line: $_"; while () { next if /^[@ ]/; print; } close TD; # or die "$td: $!"; print "\n"; } $prev=$this; $this=""; } die $this if $this;