Perl Object Environment: Difference between revisions

Content deleted Content added
added short description
Tags: Mobile edit Mobile web edit Advanced mobile edit
converted section titles to lowercase
Tags: Mobile edit Mobile web edit Advanced mobile edit
Line 11:
:''"POE originally was developed as the core of a persistent object server and runtime environment. It has evolved into a general purpose multitasking and networking framework, encompassing and providing a consistent interface to other event [[Program loops|loops]] such as Event and the [[Tk (software)|Tk]] and [[GTK|Gtk]] toolkits."''
 
==POE Architecture: Layersand layers of Abstractionabstraction ==
POE, The '''Perl Object Environment''' can be thought of as a tiny modular [[operating system]]. One or more POE programs or instances can be run concurrently and are generally well suited for [[cooperative multitasking]]. The POE package consists of [[namespace]]s and [[Abstraction (computer science)|abstractions]] that guide future development of POE in an open-ended [[CPAN|CPAN-style]] convention.
 
Line 30:
A more featureful [[event handler]] is a POE::Session subclass called '''POE::NFA''' - an event-driven [[Nondeterministic finite automaton]] (a ''smarter'' finite state machine). This event handler moves from one strictly defined state to another as events, polls, user selections, or other external events require. This [[finite-state machine|state machine]] acts to encapsulate a wide range of generic [[Event-driven programming|event driven]] [[thread (computing)|threads]] allowing much tighter tracking along the [[execution path]] than the relatively informal POE::Session.
 
===The I/O Layerlayer===
The Kernel's next requirement is for Input-Output handlers that exist in a single I/O layer called ''Wheels''. Wheels initiate actions, handle their resulting low-level events, and produce higher-level events for the sessions that use them. Wheels, like Sessions and Loops are built from a uniform set of abstractions - '''POE::Wheel''' - that sit on top of the Kernel. There are seven highly specialized and well-defined Wheels in POE's base distribution:
*POE::Wheel::Run - Creates and interacts with child processes using pipe(), fork(), and sometimes exec(). Interaction is done through the child's standard input and output.
Line 54:
see [http://metacpan.org/module/POE POE at CPAN] for the complete list
 
==POE Components==
Several larger [[Modular programming|packages]] have been written in POE according to the '''POE::Component''' documentation. These are event-driven modules, many of which act as little [[Daemon (computing)|daemons]] that provide services to larger packages to which they belong. Some of them facilitate higher-level communications between modules, especially stand-alone applications that need to remain independent from the main distribution of Perl.
 
Line 68:
This should be true for any library, though."
 
==POE Humor==
* The Acme::POE::Knee module on the [[CPAN]].
* A number of silly acronym expansions at the end of What POE Is.