This document helps you (and me) understand the architecture of this script.
Hopefully it will help you get jump-started when you want to make
modifications.


MAJOR MODULES

DailyUpdate.pl: the main program. Creates a DailyUpdate::Parser to parse the
input file and create the output.

DailyUpdate::Parser: Encapsulates the parsing of the template file. Parses an
input file, looking for a dailyupdate tag. When it sees one, it calls Create on
a HandlerFactory object. Then it calls handle on the handler that
HandlerFactory creates.

DailyUpdate::HandlerFactory: Encapsulates the process of finding a suitable
handler for a given tag. Tries to load a handler for a given tag first
locally, and then via the network (if the user okays it). It announces an
error if it can not find one.

DailyUpdate::Handler: The base class for handlers. Has a generic "new" that can
be inherited by most handlers. Also implements "CachedDataUsable", which
checks the old output file to see if we can reuse the old data given the
current time and update time criteria in the configuration file. It's "Handle"
function will work for most derived handlers, provided they replace "Get",
"Filter" and "Output".

DailyUpdate::AcquisitionFunctions: An API of useful functions for grabbing data
from the internet. This is used by handler writers.

DailyUpdate::PrintFunctions: An API of useful functions for outputting data in
various HTML styles. This is used by handler writers.
