#!/usr/bin/perl -w # From LaTeX: It's Not Just for Academia, Part 2, Kevin O'Malley # O'Reilly MacDevCenter, Feb 2004. use strict; my $MAKE_PDF_CMD = "pdflatex "; my $SUM_CMD = "/usr/bin/sum"; if (@ARGV != 2) { print "usage: perl watch.pl [file-to-watch] [check-delay-secs]\n"; exit; } my ($filename, $delay, $format) = @ARGV; my %tex_docs = (); # Generate the output right off the bat. system("$MAKE_PDF_CMD $filename"); system("echo \"Word count:\"; detex $filename | wc -w"); $tex_docs{$filename} = getChecksum($filename); for(;;) { foreach my $key (keys %tex_docs) { my $lastChecksum = $tex_docs{$key}; my $checksum = getChecksum($key); if ($checksum != $lastChecksum) { system("$MAKE_PDF_CMD $filename"); system("echo \"Word count:\"; detex $filename | wc -w"); } $tex_docs{$key} = $checksum; } sleep($delay); } sub getChecksum { my ($file) = @_; open(FILE, "$SUM_CMD $file |"); while() { my $line = $_; my @chunk = split(/\s+/, $line); my $checksum = $chunk[0]; return $checksum; } }