The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
ProgressMonitor

This is a release of ProgressMonitor, a generic, flexible and extendable OO
framework for using the notion of giving feedback (to a user, commonly) that a
long-running task is actually doing something (and preferably tell how much of
the task remains).

A piece of code that does a task declares that it takes a progress monitor
instance. When/if given one, it will report progress in a defined and generic
manner. If its task requires using other sub-tasks, the task can farm out a
piece of its work to the sub-task, using a new progress monitor, and still have
overall correct reporting.

The type of progress monitor given to the top task has the option to provide
the (user) feedback in any manner it so chooses (indeed, if any - a 'null'
monitor is perfectly legal).

Primarily, the interface is concerned with 'ticks' or 'heartbeats' from the 
working code. If the amount of work was known beforehand, then these ticks will
help compute remaining work and present this in a number of ways. A secondary
part of the interface also allows work code to provide messages (typically short
ones, they will be cut if they won't fit in the provided space) on what it is
doing. The monitor can decide to show or not show this, and if it shows it, it
can do so in a couple of ways - perhaps as new lines, or overlaying the ordinary
field(s).

Included in the package is two main variants of monitors, both of which deals
with reporting using strings. Special monitors for 'null' use and for subtasks
is also provided.
One of the string based monitors simply prints the string on a stream, the other
uses a callback to allow the client to do whatever it wish with the string. The
strings produced can be of a variety of types ('fields'), and even complex
combinations.

If none of the provided monitors/fields suits you, inherit from the provided
interfaces/implementations and roll your own!

INSTALLATION

ProgressMonitor definitively requires the pragma 'classes' to be installed
(minimum version 0.943). I believe the rest is standard...but as I have little
else to test on, as well as the fact that some could be version specific, I
could be wrong - please drop me a line so I can update this text or do something
otherwise intelligent about it).

To install this module, run the following commands:

    perl Makefile.PL
    make
    make test
    make install

SUPPORT AND DOCUMENTATION

After installing, you can find documentation for this module with the perldoc command.

    perldoc ProgressMonitor

You can also look for information at:

    Search CPAN
        http://search.cpan.org/dist/ProgressMonitor

    CPAN Request Tracker:
        http://rt.cpan.org/NoAuth/Bugs.html?Dist=ProgressMonitor

    AnnoCPAN, annotated CPAN documentation:
        http://annocpan.org/dist/ProgressMonitor

    CPAN Ratings:
        http://cpanratings.perl.org/d/ProgressMonitor

COPYRIGHT AND LICENCE

Copyright (C) 2006,2007,2008 Kenneth Olwing

This program is free software; you can redistribute it and/or modify it
under the same terms as Perl itself.