#!/usr/bin/perl -w
#
use strict;
my ($filename,$dist,$pos,%wides,$cnt);
open IF,"<bacula.log" or die "Cannot open log file";
$cnt = 0;
while (<IF>) {
chomp;
$cnt++;
# A new filename starts with a paren at the left margin,
# followed by a ./ .
if (/^\(\.\/([\S]*tex)/) {
$filename = $1;
next;
}
if (/^Overfull \\hbox \(([\d.]*)pt too wide.*lines (.*)$/) {
($dist,$pos) = ($1,$2);
$wides{$dist} = {filename => $filename,
pos => $pos,
logline => $cnt,
};
}
}
close IF;
# print em
open OF,">overfulls" or die "Cannot open output file\n";
foreach (reverse(sort{$a<=>$b}(keys(%wides)))) {
printf OF "%.5fpt line %s in file %s line %d in logfile\n",$_,$wides{$_}{pos},$wides{$_}{filename},$wides{$_}{logline};
}
close OF;
print "Done\n";
syntax highlighted by Code2HTML, v. 0.9.1