Pure perl eval with persistent lexical variables.
Event::ExecFlow provides a high level API for defining complex flow controls
with asynchronous execution of external programs.
Fennec does a ton, but it may be hard to adopt it all at once. It also
is a large project, and has not yet been fully split into component
projects. Fennec::Lite takes a minimalist approach to do for Fennec
what Mouse does for Moose.
Fennec::Lite is a single module file with no non-core dependencies. It
can easily be used by any project, either directly, or by copying it
into your project. The file itself is less than 300 lines of code at
the time of this writing, that includes whitespace.
Event::Notify implements a simple Observer pattern.
Event - A Generic Perl Event Loop
This extension aims to provide a simple and optimized event loop for a
broad class of applications.
Returns true when the conditions (cycles or seconds elapsed) are met.
This module allows you to declare hierarchies of exception classes for
use in your code. It also provides a simple exception class that it
uses as the default base class for all other exceptions.
You may choose to use another base class for your exceptions.
Regardless, the ability to declare all your exceptions at compile time
is a fairly useful trick and helps push people towards more structured
use of exceptions.
Expect::Simple is a wrapper around the Expect module which should suffice
for simple applications. It hides most of the Expect machinery; the Expect
object is available for tweaking if need be.
Generally, one starts by creating an Expect::Simple object using new. This
will start up the target program, and will wait until one of the specified
prompts is output by the target. At that point the caller should send()
commands to the program; the results are available via the before, after,
match_str, and match_idx methods. Since Expect simulates a terminal, there
will be extra \r characters at the end of each line in the result (on UNIX
at least). This is easily fixed:
($res = $obj->before) =~ tr/\r//d;
@lines = split( "\n", $res );
This is not done automatically.
Exceptions will be thrown on error (match with /Expect::Simple/). Errors
from Expect are available via the error_expect method. More human readable
errors are available via the error method.
The connection is automatically broken (by sending the specified
disconnect command to the target) when the Expect::Simple object is
destroyed.
Exporter::Declare is a meta-driven exporting tool. Exporter::Declare
tries to adopt all the good features of other exporting tools, while
throwing away horrible interfaces. Exporter::Declare also provides
hooks that allow you to add options and arguments for import. Finally,
Exporter::Declare's meta-driven system allows for top-notch
introspection.
Exporter::Easy makes using Exporter easy. In it's simplest case it
allows you to drop the boilerplate code that comes with using Exporter.