System administration tasks often involve running child programs.
Perl's system() command is good for non-interactive programs, but
sometimes it's necessary to script the interaction with them.
IPC::Run and Expect are great for this, but they're limited to
interacting with a single program at a time.

POE::Wheel::Run, however, provides an asynchronous way to manage
interactive child programs. Because it doesn't block, you can spawn
several of them. This can be a real time saver when something must be
executed on dozens, if not hundreds of remote machines. Why wait for
the commands to complete when several machines can run it at a time?

POE's author uses it for regression testing POE. The testing
procedure goes much faster when tests run concurrently. See the
SourceForge and Compaq machines at POE's test results.

This sample program, however, is much simpler than all that. It
manages a single [nethack] session, piping
user input to the child process and child output back to the user's
terminal. It also adds a little value to the game. Check out the
comments!