“Most of the programs we write every day have the same basic
blueprint: they start up, they perform a series of actions, and
then they exit. This works fine for programs that don’t need much
interaction with their users or their data, but for more
complicated tasks, you need a more expressive program
structure.”
“That’s where POE (Perl Object Environment) comes in. POE is a
framework for building Perl programs that lends itself naturally to
tasks which involve reacting to external data, such as network
communications or user interfaces. Programs written in POE are
completely non-linear; you set up a bunch of small subroutines and
define how they all call each other, and POE will automatically
switch between them while it’s handling your program’s input and
output. It can be confusing at first, if you’re used to procedural
programming, but with a little practice it becomes second
nature.”
“It’s not much of an exaggeration to say that POE is a small
operating system written in Perl, with its own kernel, processes,
interprocess communication (IPC), drivers, and so on. In practice,
however, it just boils down to a simple system for assembling state
machines. Here’s a brief description of each of the pieces that
make up the POE environment….”