Content deleted Content added
mNo edit summary |
NotAG on AWB (talk | contribs) replace {{manual}} with {{how-to}} per TfD |
||
(31 intermediate revisions by 25 users not shown) | |||
Line 1:
{{Short description|Library of modules (software)}}
{{Multiple issues|
{{essay-like|date=October 2018}}
{{overly detailed|date=October 2018}}
The '''Perl Object Environment''' or '''POE''' is a [[Library (computer science)|library]] of Perl modules written in the [[Perl]] [[programming language]] by [[Rocco Caputo]] et alia. ▼
{{how-to|article|date=January 2017}}
}}
▲The '''Perl Object Environment'''
From CPAN:
:''"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
==
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 [[
===The event layer===
The informal architecture consists of a set of layers with a [[Kernel (
The POE::Kernel namespace contains a suite of functions which are plugged
There is also a higher level packaging framework - POE::Macro and a debugging utility for testing them called POE::Preprocessor. This framework has yielded '''POE::Macro::UseBytes'''.
:NOTE: As the Perl tradition mandates, POE is also a moving target.
Always check [[CPAN]] to see what new goodies the community has placed in the archive.
(...and remember Perl's Motto: "There's more than one way to do it" per [[Larry Wall|Larry]])
The Running Kernel operates through primordial [[finite
A more featureful [[event handler]] is a POE::Session subclass called '''POE::NFA''' - an event-driven [[Nondeterministic finite
===The I/O
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 35 ⟶ 38:
*POE::Wheel::ListenAccept - A subset of POE::Wheel::SocketFactory used for listening on existing server sockets and accepting connections from remote clients.
*POE::Wheel::ReadLine - A non-blocking, event driven analogue to Term::ReadLine.
*POE::Wheel::ReadWrite - A high-performance [[
===The file layers===
Drivers do the actual work of reading and writing filehandles. They are built according to the less abstract definitions contained in the '''POE::Driver''' module. The main driver implemented at the time of this writing is '''POE::Driver::SysRW''' - a universal filehandle reader/writer designed especially for POE::Wheel::ReadWrite.
The next layer, built from '''POE::Filter''' and probably the focus of most Perl Obfuscation Efficianados (see POE [[#POE
"Filters translate between raw streams
and cooked chunks of tasty dada." per [[Matt Cashner|`sungo']]
Line 49 ⟶ 52:
*'''POE::Filter::Stream''' - does nothing. It merely passes data through without any change.
see [http://
==
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 (
In general, POE Components are ready-made high level procedures that perform specific large tasks. A few examples:
Line 65 ⟶ 68:
This should be true for any library, though."
==
* The
* A number of silly acronym expansions at the end of
==See also==
Line 75 ⟶ 78:
==External links==
*[http://poe.perl.org/ POE Home Page] (a Wiki site)
[[Category:Perl software]]▼
[[Category:Perl modules]]
▲[[Category:Perl software]]
|