Excerpted from the README file:
Term::Query.pm is a Perl 5 module, which performs generalized queries on
various kinds of values. Validation and normalization of input, based
on the type, is automated, as is error reporting and re-solicitation of
input.
Input of '?', unless configured otherwise, provides useful, helpful
information, based on the expected input type, even in the absence of a
programmer-supplied help string.
Perl 5 ships with a module called Term::ReadLine which is an interface
to command line editing and recall. The version that ships with Perl
is only a stub, and offers little functionality.
This module supplements Term::ReadLine so that it uses GNU readline,
which comes with FreeBSD. Applications that use Term::ReadLine do
not need to be modified to gain the benefits of this package; it will
happen transparently upon installation.
Test::Assertions provides a convenient set of tools for constructing
tests, such as unit tests or run-time assertion checks (like C's
ASSERT macro). Unlike some of the Test:: modules available on CPAN,
Test::Assertions is not limited to unit test scripts; for example
it can be used to check output is as expected within a benchmarking
script. When it is used for unit tests, it generates output in the
standard form for CPAN unit testing (under Test::Harness).
When coding it is common to come up against problems that need to be addressed
but that are not a big deal at the moment. What generally happens is that the
coder adds comments like:
# FIXME - what about windows that are bigger than the screen?
# FIXME - add checking of user priviledges here.
Test::Fixme allows you to add a test file that ensures that none of these get
forgotten in the module.
This modules causes any warnings produced by test scripts to be
captured and stored. It automatically adds an extra test that will run
when your script ends to check that there were no warnings. If there
were any warnings, the test will give a "not ok" and diagnostics of
where, when and what the warning was, including a stack trace of what
was going on when the it occurred.
Test::Output provides a simple interface for testing output sent to
STDOUT or STDERR. A number of different utilities are included to try
and be as flexible as possible to the tester.
Originally this module was designed not to have external requirements,
however, the features provided by Sub::Exporter over what Exporter
provides is just to great to pass up.
Test::Output ties STDOUT and STDERR using Test::Output::Tie.
These routines are the inverse of built-in perl functions localtime() and
gmtime(). They accept a date as a six-element array, and return the
corresponding time(2) value in seconds since the system epoch (Midnight,
January 1, 1970 UTC on Unix, for example). This value can be positive or
negative, though POSIX only requires support for positive values, so dates
before the system's epoch may not work on all operating systems.
This module was created as an alternative to use fields,
and uses Class::Accessor::Fast as a base
Creates accessors at compiletime
Have own default new method: it creates object as a blessed hash,
then locks keys to defined field list, and invoke init.
So, recommended usage inside packages, is access by hash keys
(it's 3 times faster then accessor). Since keys are locked,
you will not suffer from autovivification. Public interface
recommended to be documented as accessors.
Uses Class::C3
Because Perl methods are just regular subroutines, it's difficult to
tell what's a method and what's just an imported function. As a result,
imported functions can be called as methods on your objects. This pragma
will delete imported functions from your class's symbol table, thereby
ensuring that your interface is as you specified it. However, code
inside your module will still be able to use the imported functions
without any problems.
The reaper module provides a $SIG{CHLD} handler that can be installed
globally as well as locally. It also supports chaining of signal handlers,
meaning it will not just replace an existing $SIG{CHLD} handler. It still
requires applications to do the right thing in using this module and not
installing their own versions. At least it provides a consistent
implementation that can be shared between various modules.