in reply to Perl Timers and command-line processes

Since you are on *nix, I would recommend alarm and $SIG{ALRM}.

Straight from perldoc:
eval { local $SIG{ALRM} = sub { die "alarm\n" }; # NB: \n required alarm $timeout; $nread = sysread SOCKET, $buffer, $size; alarm 0; };

You can stick your PDF stuff in the sysread line.

CAVEAT: This is not portable to M$ Win32

grep
grep> cd pub
grep> more beer