Content deleted Content added
No edit summary |
NotAG on AWB (talk | contribs) replace {{manual}} with {{how-to}} per TfD |
||
(25 intermediate revisions by 19 users not shown) | |||
Line 1:
{{Short description|Library of modules (software)}}
{{Multiple issues|
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 al. ▼
{{essay-like|date=October 2018}}
{{overly detailed|date=October 2018}}
{{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 33 ⟶ 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 [[Asynchronous I/O|NBIO]] file handler for POE that uses POE's ''[[
===The file layers===
Line 47 ⟶ 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 63 ⟶ 68:
This should be true for any library, though."
==
* The
* A number of silly acronym expansions at the end of
==See also==
Line 73 ⟶ 78:
==External links==
*[http://poe.perl.org/ POE Home Page] (a Wiki site)
[[Category:Perl modules]]▼
[[Category:Perl software]]
▲[[Category:Perl modules]]
|