{
    "content": [
        {
            "type": "text",
            "text": "# POE (man)\n\n## NAME\n\nPOE - portable multitasking and networking framework for any event loop\n\n## SYNOPSIS\n\n#!/usr/bin/perl\nuse warnings;\nuse strict;\nuse POE;  # Auto-includes POE::Kernel and POE::Session.\nsub handlerstart {\nmy ($kernel, $heap, $session) = @[KERNEL, HEAP, SESSION];\nprint \"Session \", $session->ID, \" has started.\\n\";\n$heap->{count} = 0;\n$kernel->yield('increment');\n}\nsub handlerincrement {\nmy ($kernel, $heap, $session) = @[KERNEL, HEAP, SESSION];\nprint \"Session \", $session->ID, \" counted to \", ++$heap->{count}, \".\\n\";\n$kernel->yield('increment') if $heap->{count} < 10;\n}\nsub handlerstop {\nprint \"Session \", $[SESSION]->ID, \" has stopped.\\n\";\n}\nfor (1..10) {\nPOE::Session->create(\ninlinestates => {\nstart    => \\&handlerstart,\nincrement => \\&handlerincrement,\nstop     => \\&handlerstop,\n}\n);\n}\nPOE::Kernel->run();\nexit;\n\n## DESCRIPTION\n\nPOE is a framework for cooperative, event driven multitasking and networking in Perl.  Other\nlanguages have similar frameworks.  Python has Twisted.  TCL has \"the event loop\".\n\n## Sections\n\n- **NAME**\n- **SYNOPSIS**\n- **DESCRIPTION** (5 subsections)\n- **DOCUMENTATION ROADMAP** (9 subsections)\n- **SYSTEM REQUIREMENTS**\n- **COMPATIBILITY ISSUES** (3 subsections)\n- **GETTING HELP** (7 subsections)\n- **SEE ALSO** (11 subsections)\n\nUse structuredContent.sections for detailed options, examples, and full documentation.\n"
        }
    ],
    "structuredContent": {
        "command": "POE",
        "section": "",
        "mode": "man",
        "summary": "POE - portable multitasking and networking framework for any event loop",
        "synopsis": "#!/usr/bin/perl\nuse warnings;\nuse strict;\nuse POE;  # Auto-includes POE::Kernel and POE::Session.\nsub handlerstart {\nmy ($kernel, $heap, $session) = @[KERNEL, HEAP, SESSION];\nprint \"Session \", $session->ID, \" has started.\\n\";\n$heap->{count} = 0;\n$kernel->yield('increment');\n}\nsub handlerincrement {\nmy ($kernel, $heap, $session) = @[KERNEL, HEAP, SESSION];\nprint \"Session \", $session->ID, \" counted to \", ++$heap->{count}, \".\\n\";\n$kernel->yield('increment') if $heap->{count} < 10;\n}\nsub handlerstop {\nprint \"Session \", $[SESSION]->ID, \" has stopped.\\n\";\n}\nfor (1..10) {\nPOE::Session->create(\ninlinestates => {\nstart    => \\&handlerstart,\nincrement => \\&handlerincrement,\nstop     => \\&handlerstop,\n}\n);\n}\nPOE::Kernel->run();\nexit;",
        "tldr_summary": null,
        "tldr_examples": [],
        "tldr_source": null,
        "flags": [],
        "examples": [],
        "see_also": [],
        "section_outline": [
            {
                "name": "NAME",
                "lines": 2,
                "subsections": []
            },
            {
                "name": "SYNOPSIS",
                "lines": 37,
                "subsections": []
            },
            {
                "name": "DESCRIPTION",
                "lines": 22,
                "subsections": [
                    {
                        "name": "Layer 1: Kernel and Sessions",
                        "lines": 13
                    },
                    {
                        "name": "Layer 2: Wheels, Filters, and Drivers",
                        "lines": 17
                    },
                    {
                        "name": "Layer 3: Components",
                        "lines": 18
                    },
                    {
                        "name": "Layer 4 and Beyond: Frameworks and Object Metaphors",
                        "lines": 14
                    },
                    {
                        "name": "Layer 0: POE's Internals",
                        "lines": 12
                    }
                ]
            },
            {
                "name": "DOCUMENTATION ROADMAP",
                "lines": 3,
                "subsections": [
                    {
                        "name": "Basic Features",
                        "lines": 5
                    },
                    {
                        "name": "Basic Usage",
                        "lines": 8
                    },
                    {
                        "name": "Base Classes Document Common Features",
                        "lines": 7
                    },
                    {
                        "name": "Helper Classes",
                        "lines": 3
                    },
                    {
                        "name": "Event Loop Bridges",
                        "lines": 7
                    },
                    {
                        "name": "POE::Queue and POE::Queue::Array",
                        "lines": 6
                    },
                    {
                        "name": "This Section Isn't Complete",
                        "lines": 3
                    },
                    {
                        "name": "See SEE ALSO",
                        "lines": 2
                    },
                    {
                        "name": "Don't Forget the Web",
                        "lines": 5
                    }
                ]
            },
            {
                "name": "SYSTEM REQUIREMENTS",
                "lines": 24,
                "subsections": []
            },
            {
                "name": "COMPATIBILITY ISSUES",
                "lines": 32,
                "subsections": [
                    {
                        "name": "Windows Issues",
                        "lines": 12
                    },
                    {
                        "name": "Linux/Unix Issues",
                        "lines": 16
                    },
                    {
                        "name": "Other Compatibility Issues",
                        "lines": 2
                    }
                ]
            },
            {
                "name": "GETTING HELP",
                "lines": 2,
                "subsections": [
                    {
                        "name": "POE's Request Tracker",
                        "lines": 4
                    },
                    {
                        "name": "POE's Mailing List",
                        "lines": 4
                    },
                    {
                        "name": "POE's Web Site",
                        "lines": 3
                    },
                    {
                        "name": "POE's Source Code",
                        "lines": 4
                    },
                    {
                        "name": "SourceForge",
                        "lines": 2
                    },
                    {
                        "name": "Internet Relay Chat (IRC)",
                        "lines": 4
                    },
                    {
                        "name": "Personal Support",
                        "lines": 3
                    }
                ]
            },
            {
                "name": "SEE ALSO",
                "lines": 2,
                "subsections": [
                    {
                        "name": "Layer 1",
                        "lines": 2
                    },
                    {
                        "name": "Layer 2",
                        "lines": 9
                    },
                    {
                        "name": "Layer 3",
                        "lines": 2
                    },
                    {
                        "name": "Layer 0",
                        "lines": 9
                    },
                    {
                        "name": "Helpers",
                        "lines": 2
                    },
                    {
                        "name": "Home Page",
                        "lines": 2
                    },
                    {
                        "name": "Bug Tracker",
                        "lines": 2
                    },
                    {
                        "name": "Repositories and Changes",
                        "lines": 3
                    },
                    {
                        "name": "Other Resources",
                        "lines": 4
                    },
                    {
                        "name": "AUTHORS & COPYRIGHT",
                        "lines": 111
                    },
                    {
                        "name": "Author",
                        "lines": 14
                    }
                ]
            }
        ],
        "sections": {
            "NAME": {
                "content": "POE - portable multitasking and networking framework for any event loop\n",
                "subsections": []
            },
            "SYNOPSIS": {
                "content": "#!/usr/bin/perl\n\nuse warnings;\nuse strict;\n\nuse POE;  # Auto-includes POE::Kernel and POE::Session.\n\nsub handlerstart {\nmy ($kernel, $heap, $session) = @[KERNEL, HEAP, SESSION];\nprint \"Session \", $session->ID, \" has started.\\n\";\n$heap->{count} = 0;\n$kernel->yield('increment');\n}\n\nsub handlerincrement {\nmy ($kernel, $heap, $session) = @[KERNEL, HEAP, SESSION];\nprint \"Session \", $session->ID, \" counted to \", ++$heap->{count}, \".\\n\";\n$kernel->yield('increment') if $heap->{count} < 10;\n}\n\nsub handlerstop {\nprint \"Session \", $[SESSION]->ID, \" has stopped.\\n\";\n}\n\nfor (1..10) {\nPOE::Session->create(\ninlinestates => {\nstart    => \\&handlerstart,\nincrement => \\&handlerincrement,\nstop     => \\&handlerstop,\n}\n);\n}\n\nPOE::Kernel->run();\nexit;\n",
                "subsections": []
            },
            "DESCRIPTION": {
                "content": "POE is a framework for cooperative, event driven multitasking and networking in Perl.  Other\nlanguages have similar frameworks.  Python has Twisted.  TCL has \"the event loop\".\n\nPOE provides a unified interface for several other event loops, including select(), IO::Poll,\nGlib, Gtk, Tk, Wx, and Gtk2.  Many of these event loop interfaces were written by others,\nwith the help of POE::Test::Loops.  They may be found on the CPAN.\n\nPOE achieves its high degree of portability to different operating systems and Perl versions\nby being written entirely in Perl.  CPAN hosts optional XS modules for POE if speed is more\ndesirable than portability.\n\nPOE is designed in layers.  Each layer builds atop the lower level ones.  Programs are free\nto use POE at any level of abstraction, and different levels can be mixed and matched\nseamlessly within a single program.  Remember, though, that higher-level abstractions often\nrequire more resources than lower-level ones.  The conveniences they provide are not free.\n\nPOE's bundled abstraction layers are the tip of a growing iceberg.  Sprocket, POE::Stage, and\nother CPAN distributions build upon this work.  You're encouraged to look around.\n\nNo matter how high you go, though, it all boils down to calls to POE::Kernel.  So your down-\nto-earth code can easily cooperate with stratospheric systems.\n",
                "subsections": [
                    {
                        "name": "Layer 1: Kernel and Sessions",
                        "content": "The lowest public layer is comprised of POE::Kernel, POE::Session, and other session types.\n\nPOE::Kernel does most of the heavy lifting.  It provides a portable interface for filehandle\nactivity detection, multiple alarms and other timers, signal handling, and other less-common\nfeatures.\n\nPOE::Session and derived classes encapsulate the notion of an event driven task.  They also\ncustomize event dispatch to a particular calling convention.  POE::NFA, for example, is more\nof a proper state machine.  The CPAN has several other kinds of sessions.\n\nEverything ultimately builds on these classes or the concepts they implement.  If you're\nshort on time, the things to read besides this are POE::Kernel and POE::Session.\n"
                    },
                    {
                        "name": "Layer 2: Wheels, Filters, and Drivers",
                        "content": "POE::Wheel objects are dynamic mix-ins for POE::Session instances. These \"wheels\" perform\nvery common, generic tasks in a highly reusable and customizable way.  POE::Wheel::ReadWrite,\nfor example, implements non-blocking buffered I/O.  Nearly everybody needs this, so why\nrequire people to reinvent it all the time?\n\nPOE::Filter objects customize wheels in a modular way.  Filters act as I/O layers, turning\nraw streams into structured data, and serializing structures into something suitable for\nstreams.  The CPAN also has several of these.\n\nDrivers are where the wheels meet the road.  In this case, the road is some type of file\nhandle.  Drivers do the actual reading and writing in a standard way so wheels don't need to\nknow the difference between send() and syswrite().\n\nPOE::Driver objects get relatively short shrift because very few are needed.  The most common\ndriver, POE::Driver::SysRW is ubiquitous and also the default, so most people will never need\nto specify one.\n"
                    },
                    {
                        "name": "Layer 3: Components",
                        "content": "POE::Component classes are essentially Perl classes that use POE to perform tasks in a non-\nblocking or cooperative way.  This is a very broad definition, and POE components are all\nover the abstraction map.\n\nMany components, such as POE::Component::Server::SMTP, encapsulate the generic details of an\nentire application.  Others perform rather narrow tasks, such as\nPOE::Component::DirWatch::Object.\n\nPOE components are often just plain Perl objects.  The previously mentioned\nPOE::Component::DirWatch::Object uses Moose.  Other object and meta-object frameworks are\ncompatible.\n\nAlso of interest is POE::Component::Generic, which allows you to create a POE component from\nnearly any blocking module.\n\nThere are quite a lot of components on the CPAN.\n<http://search.cpan.org/search?query=poe+component&mode=all>\n"
                    },
                    {
                        "name": "Layer 4 and Beyond: Frameworks and Object Metaphors",
                        "content": "It's possible to abstract POE entirely behind a different framework.  In fact we encourage\npeople to write domain-specific abstractions that entirely hide POE if necessary.  The nice\nthing here is that even at these high levels of abstraction, things will continue to\ninteroperate all the way down to layer 1.\n\nTwo examples of ultra-high level abstraction are Sprocket, a networking framework that does\nits own thing, and POE::Stage, which is POE's creator's attempt to formalize and standardize\nPOE components.\n\nIt is also possible to communicate between POE processes.  This is called IKC, for Inter-\nKernel Communication.  There are a few IKC components on the CPAN\n(<http://search.cpan.org/search?query=IKC&mode=all>), notably POE::Component::IKC and\nPOE::TIKC.\n"
                    },
                    {
                        "name": "Layer 0: POE's Internals",
                        "content": "POE's layered architecture continues below the surface.  POE's guts are broken into specific\nPOE::Loop classes for each event loop it supports.  Internals are divided up by type, giving\nPOE::Resource classes for Aliases, Controls, Events, Extrefs, FileHandles, SIDs, Sessions and\nSignals.\n\nPOE::Kernel's APIs are extensible through POE::API mix-in classes.  Some brave souls have\neven published new APIs on CPAN, such as POE::API::Peek (which gives you access to some of\nthe internal POE::Resource methods).\n\nBy design, it's possible to implement new POE::Kernel guts by creating another POE::Resource\nclass.  One can then expose the functionality with a new POE::API mix-in.\n"
                    }
                ]
            },
            "DOCUMENTATION ROADMAP": {
                "content": "You're reading the main POE documentation.  It's the general entry point to the world of POE.\nYou already know this, however, so let's talk about something more interesting.\n",
                "subsections": [
                    {
                        "name": "Basic Features",
                        "content": "POE's basic features are documented mainly in POE::Kernel and POE::Session.  Methods are\ndocumented in the classes that implement them.  Broader concepts are covered in the most\nappropriate class, and sometimes they are divided among classes that share in their\nimplementation.\n"
                    },
                    {
                        "name": "Basic Usage",
                        "content": "Basic usage, even for POE.pm, is documented in POE::Kernel.  That's where most of POE's work\nis done, and POE.pm is little more than a class loader.\n\n@[KERNEL, HEAP, etc.]\nEvent handler calling conventions, that weird @[KERNEL, HEAP] stuff, is documented in\nPOE::Session.  That's because POE::Session implements the calling convention, and other\nsession types often do it differently.\n"
                    },
                    {
                        "name": "Base Classes Document Common Features",
                        "content": "The POE::Wheel, POE::Driver, POE::Filter, and POE::Component base classes describe what's\ncommon among each class.  It's a good idea to at least skim the base class documentation\nsince the subclasses tend not to rehash the common things.\n\nPOE::Queue, POE::Resource, and POE::Loop document the concepts and sometimes the standard\ninterfaces behind multiple subclasses.  You're encouraged to have a look.\n"
                    },
                    {
                        "name": "Helper Classes",
                        "content": "POE includes some helper classes for portability.  POE::Pipe, and its subclasses\nPOE::Pipe::OneWay and POE::Pipe::TwoWay are portable pipes.\n"
                    },
                    {
                        "name": "Event Loop Bridges",
                        "content": "POE::Loop documents and specifies the interface for all of POE's event loop bridges.  The\nindividual classes may document specific details, but generally they adhere to the spec\nstrongly enough that they don't need to.\n\nMany of the existing POE::Loop bridges provided in POE's base distribution will move out to\nseparate distributions shortly.  The documentation will probably remain the same, however.\n"
                    },
                    {
                        "name": "POE::Queue and POE::Queue::Array",
                        "content": "POE's event queue is basically a priority heap implemented as an ordered array.  POE::Queue\ndocuments the standard interface for POE event queues, and POE::Queue::Array implements the\nordered array queue.  Tony Cook has released POE::XS::Queue::Array, which is a drop-in C\nreplacement for POE::Queue::Array.  You might give it a try if you need more performance.\nPOE's event queue is some of the hottest code in the system.\n"
                    },
                    {
                        "name": "This Section Isn't Complete",
                        "content": "Help organize the documentation.  Obviously we can't think of everything.  We're well aware\nof this and welcome audience participation.\n"
                    },
                    {
                        "name": "See SEE ALSO",
                        "content": "Wherever possible, the SEE ALSO section will cross-reference one module to related ones.\n"
                    },
                    {
                        "name": "Don't Forget the Web",
                        "content": "Finally, there are many POE resources on the web.  The CPAN contains a growing number of POE\nmodules.  <http://poe.perl.org/> hosts POE's wiki, which includes tutorials, an extensive set\nof examples, documentation, and more.  Plus it's a wiki, so you can trivially pitch in your\ntwo cents.\n"
                    }
                ]
            },
            "SYSTEM REQUIREMENTS": {
                "content": "POE's basic requirements are rather light.  Most are included with modern versions of Perl,\nand the rest (if any) should be generally portable by now.\n\nTime::HiRes is highly recommended, even for older Perls that don't include it.  POE will work\nwithout it, but alarms and other features will be much more accurate if it's included.\nPOE::Kernel will use Time::HiRes automatically if it's available.\n\nPOE::Filter::Reference needs a module to serialize data for transporting it across a network.\nIt will use Storable, FreezeThaw, YAML, or some other package with freeze() and thaw()\nmethods.  It can also use Compress::Zlib to conserve bandwidth and reduce latency over slow\nlinks, but it's not required.\n\nIf you want to write web servers, you'll need to install libwww-perl, which requires libnet.\nThis is a small world of modules that includes HTTP::Status, HTTP::Request, HTTP::Date, and\nHTTP::Response.  They are generally good to have, and modern versions of Perl even include\nthem.\n\nPrograms that use POE::Wheel::Curses will of course require the Curses module, which in turn\nrequires some sort of curses library.\n\nIf you're using POE with Tk, you'll need Tk installed.\n\nAnd other obvious things.  Let us know if we've overlooked a non-obvious detail.\n",
                "subsections": []
            },
            "COMPATIBILITY ISSUES": {
                "content": "One of POE's design goals is to be as portable as possible.  That's why it's written in\n\"Plain Perl\".  XS versions of POE modules are available as third-party distributions.  Parts\nof POE that require nonstandard libraries are optional, and not having those libraries should\nnot prevent POE from installing.\n\nDespite Chris Williams' efforts, we can't test POE everywhere.  Please see the GETTING HELP\nsection if you run into a problem.\n\nPOE is expected to work on most forms of UNIX, including FreeBSD, MacOS X, Linux, Solaris.\nMaybe even AIX and QNX, but we're not sure.\n\nPOE is also tested on Windows XP, using the latest version of ActiveState, Strawberry and\nCygwin Perl.  POE is fully supported with Strawberry Perl, as it's included in the Strawberry\ndistribution.\n\nOS/2 and MacOS 9 have been reported to work in the past, but nobody seems to be testing there\nanymore.  Reports and patches are still welcome.\n\nPast versions of POE have been tested with Perl versions as far back as 5.6.2 and as recent\nas \"blead\", today's development build.  We can no longer guarantee each release will work\neverywhere, but we will be happy to work with you if you need special support for a really\nold system. You can always use older POE releases that works on your version, please check\nBackPAN <http://backpan.perl.org/authors/id/R/RC/RCAPUTO/>.\n\nPOE's quality is due in large part to the fine work of Chris Williams and the other CPAN\ntesters.  They have dedicated resources towards ensuring CPAN distributions pass their own\ntests, and we watch their reports religiously.  You can, too.  The latest POE test reports\ncan be found at <http://cpantesters.org/distro/P/POE.html>.\n\nThanks also go out to Benjamin Smith and the 2006 Google Summer of Code.  Ben was awarded a\ngrant to improve POE's test suite, which he did admirably.\n",
                "subsections": [
                    {
                        "name": "Windows Issues",
                        "content": "POE seems to work very nicely with Perl compiled for Cygwin.  If you must use ActiveState\nPerl, please use the absolute latest version.  ActiveState Perl's compatibility fluctuates\nfrom one build to another, so we tend not to support older releases.\n\nWindows and ActiveState Perl are considered an esoteric platform due to the complex\ninteractions between various versions.  POE therefore relies on user feedback and support\nhere.\n\nA number of people have helped bring POE's Windows support this far, through contributions of\ntime, patches, and other resources.  Some of them are: Sean Puckett, Douglas Couch, Andrew\nChen, Uhlarik Ondoej, Nick Williams, and Chris Williams (no relation).\n"
                    },
                    {
                        "name": "Linux/Unix Issues",
                        "content": "pty woes\n\nSome distributions chose to not completely setup the pseudo-tty support. This is needed for\nPOE::Wheel::Run to interact with the subprocess. If you see something like this while running\n\"make test\" please look at your distribution's documentation on how to fix it. For example,\non Debian-based systems the solution was to execute \"sudo apt-get install udev\".\n\nt/30loops/iopoll/wheelrun.t ..................... 1/99\nptyallocate(nonfatal): posixopenpt(): No such file or directory at /usr/local/lib/perl/5.10.0/IO/Pty.pm line 24.\n...\nCannot open a pty at /home/apoc/poe/blib/lib/POE/Wheel/Run.pm line 251\nCompilation failed in require at t/30loops/iopoll/wheelrun.t line 24.\n# Looks like you planned 99 tests but ran 5.\n# Looks like your test exited with 22 just after 5.\nt/30loops/iopoll/wheelrun.t ..................... Dubious, test returned 22 (wstat 5632, 0x1600)\n"
                    },
                    {
                        "name": "Other Compatibility Issues",
                        "content": "None currently known.  See GETTING HELP below if you've run into something.\n"
                    }
                ]
            },
            "GETTING HELP": {
                "content": "POE's developers take pride in its quality.  If you encounter a problem, please let us know.\n",
                "subsections": [
                    {
                        "name": "POE's Request Tracker",
                        "content": "You're welcome to e-mail questions and bug reports to <bug-POE@rt.cpan.org>.  This is not a\nrealtime support channel, though.  If you need a more immediate response, try one of the\nmethods below.\n"
                    },
                    {
                        "name": "POE's Mailing List",
                        "content": "POE has a dedicated mailing list where developers and users discuss the software and its use.\nYou're welcome to join us.  Send an e-mail to <poe-help@perl.org> for subscription\ninstructions.  The subject and message body are ignored.\n"
                    },
                    {
                        "name": "POE's Web Site",
                        "content": "<http://poe.perl.org> contains recent information, tutorials, and examples.  It's also a\nwiki, so people are invited to share tips and code snippets there as well.\n"
                    },
                    {
                        "name": "POE's Source Code",
                        "content": "The following command will fetch the most current version of POE into the \"poe\" subdirectory:\n\ngit clone https://github.com/rcaputo/poe.git\n"
                    },
                    {
                        "name": "SourceForge",
                        "content": "http://sourceforge.net/projects/poe/ is POE's project page.\n"
                    },
                    {
                        "name": "Internet Relay Chat (IRC)",
                        "content": "irc.perl.org channel #poe is an informal place to waste some time and maybe even discuss Perl\nand POE.  Consider an SSH relay if your workplace frowns on IRC.  But only if they won't fire\nyou if you're caught.\n"
                    },
                    {
                        "name": "Personal Support",
                        "content": "Unfortunately we don't have resources to provide free one-on-one personal support anymore.\nWe'll do it for a fee, though.  Send Rocco an e-mail via his CPAN address.\n"
                    }
                ]
            },
            "SEE ALSO": {
                "content": "Broken down by abstraction layer.\n",
                "subsections": [
                    {
                        "name": "Layer 1",
                        "content": "POE::Kernel, POE::Session, POE::NFA\n"
                    },
                    {
                        "name": "Layer 2",
                        "content": "POE::Wheel, POE::Wheel::Curses, POE::Wheel::FollowTail, POE::Wheel::ListenAccept,\nPOE::Wheel::ReadLine, POE::Wheel::ReadWrite, POE::Wheel::Run, POE::Wheel::SocketFactory\n\nPOE::Driver, POE::Driver::SysRW\n\nPOE::Filter, POE::Filter::Block, POE::Filter::Grep, POE::Filter::HTTPD, POE::Filter::Line,\nPOE::Filter::Map, POE::Filter::RecordBlock, POE::Filter::Reference, POE::Filter::Stackable,\nPOE::Filter::Stream\n"
                    },
                    {
                        "name": "Layer 3",
                        "content": "POE::Component, POE::Component::Client::TCP, POE::Component::Server::TCP\n"
                    },
                    {
                        "name": "Layer 0",
                        "content": "POE::Loop, POE::Loop::Event, POE::Loop::Gtk, POE::Loop::IOPoll, POE::Loop::Select,\nPOE::Loop::Tk\n\nPOE::Queue, POE::Queue::Array\n\nPOE::Resource, POE::Resource::Aliases, POE::Resource::Events, POE::Resource::Extrefs,\nPOE::Resource::FileHandles, POE::Resource::SIDs, POE::Resource::Sessions,\nPOE::Resource::Signals\n"
                    },
                    {
                        "name": "Helpers",
                        "content": "POE::Pipe, POE::Pipe::OneWay, POE::Pipe::TwoWay\n"
                    },
                    {
                        "name": "Home Page",
                        "content": "http://poe.perl.org/\n"
                    },
                    {
                        "name": "Bug Tracker",
                        "content": "https://rt.cpan.org/Dist/Display.html?Status=Active&Queue=POE\n"
                    },
                    {
                        "name": "Repositories and Changes",
                        "content": "You can browse the POE source and complete change logs at https://github.com/rcaputo/poe. It\nalso provides an RSS news feed for those who want to follow development in near-realtime.\n"
                    },
                    {
                        "name": "Other Resources",
                        "content": "https://metacpan.org/module/POE\n\nhttp://search.cpan.org/dist/POE\n"
                    },
                    {
                        "name": "AUTHORS & COPYRIGHT",
                        "content": "POE is the combined effort of quite a lot of people.  This is an incomplete list of some\nearly contributors.  A more complete list can be found in POE's change log.\n\nAnn Barcomb\nAnn Barcomb is <kudra@domaintje.com>, aka \"kudra\".  Ann contributed large portions of\nPOE::Simple and the code that became the ReadWrite support in POE::Component::Server::TCP.\nHer ideas also inspired Client::TCP component, introduced in version 0.1702.\n\nArtur Bergman\nArtur Bergman is <sky@cpan.org>.  He contributed many hours' work into POE and quite a lot\nof ideas.  Years later, I decide he's right and actually implement them.\n\nArtur is the author of Filter::HTTPD and Filter::Reference, as well as bits and pieces\nthroughout POE.  His feedback, testing, design and inspiration have been instrumental in\nmaking POE what it is today.\n\nArtur is investing his time heavily into perl 5's iThreads and PONIE at the moment.  This\nproject has far-reaching implications for POE's future.\n\nJos Boumans\nJos Boumans is <kane@cpan.org>, aka \"kane\".  Jos is a major driving force behind the\nPOE::Simple movement and has helped inspire the POE::Components for TCP clients and\nservers.\n\nMatt Cashner\nMatt Cashner is <sungo@pobox.com>, aka \"sungo\".  Matt is one of POE's core developers.\nHe's spearheaded the movement to simplify POE for new users, flattening the learning curve\nand making the system more accessible to everyone.  He uses the system in mission critical\napplications, folding feedback and features back into the distribution for everyone's\nenjoyment.\n\nAndrew Chen\nAndrew Chen is <achen-poe@micropixel.com>.  Andrew is the resident POE/Windows guru.  He\ncontributes much needed testing for Solaris on the SPARC and Windows on various Intel\nplatforms.\n\nDouglas Couch\nDouglas Couch is <dscouch@purdue.edu>.  Douglas helped port and maintain POE for Windows\nearly on.\n\nJeffrey Goff\nJeffrey Goff is <jgoff@blackboard.com>.  Jeffrey is the author of several POE modules,\nincluding a tokenizing filter and a component for managing user information,\nPoCo::UserBase.  He's also co-author of \"A Beginner's Introduction to POE\" at www.perl.com.\n\nPhilip Gwyn\nPhilip Gwyn is <gwynp@artware.qc.ca>.  He extended the Wheels I/O abstraction to support\nhot-swappable filters, and he eventually convinced Rocco that unique session and kernel IDs\nwere a good thing.\n\nPhilip also enhanced POE::Filter::Reference to support different serialization methods.  He\nhas also improved POE's quality by finding and fixing several bugs.  He provided POE a much\nneeded code review around version 0.06.\n\nLately, Philip tracked down the race condition in signal handling and fixed it with the\nsignal pipe.\n\nArnar M. Hrafnkelsson\nArnar is <addi@umich.edu>.  Addi tested POE and POE::Component::IRC on Windows, finding\nbugs and testing fixes.  He appears throughout the Changes file.  He has also written\n\"cpoe\", which is a POE-like library for C.\n\nDave Paris\nDave Paris is <dparis@w3works.com>.  Dave tested and benchmarked POE around version 0.05,\ndiscovering some subtle (and not so subtle) timing problems.  The pre-forking server sample\nwas his idea.  Versions 0.06 and later scaled to higher loads because of his work.  He has\ncontributed a lot of testing and feedback, much of which is tagged in the Changes file as\na-mused.  The man is scarily good at testing and troubleshooting.\n\nDieter Pearcey\nDieter Pearcey is <dieter@bullfrog.perlhacker.org>.  He goes by several Japanese nicknames.\nDieter's current area of expertise is in Wheels and Filters.  He greatly improved\nPOE::Wheel::FollowTail, and his Filter contributions include the basic Block filter, as\nwell as Stackable, RecordBlock, Grep and Map.\n\nPlixer International\nPlixer International is at <http://plixer.com/>.  Their sponsorship has helped POE 1.300\nand beyond be significantly more robust using iThreads, especially when using fork() in\nWindows.\n\nRobert Seifer\nRobert Seifer is <e-mail unknown>.  He rotates IRC nicknames regularly.\n\nRobert contributed entirely too much time, both his own and his computers, towards the\ndetection and eradication of a memory corruption bug that POE tickled in earlier Perl\nversions.  In the end, his work produced a simple compile-time hack that worked around a\nproblem relating to anonymous subs, scope and @{} processing.\n\nMatt Sergeant\nMatt contributed \"POE::Kernel::Poll\", a more efficient way to watch multiple files than\nselect().  It's since been moved to POE::Loop::IOPoll.\n\nRichard Soderberg\nRichard Soderberg is <poe@crystalflame.net>, aka \"coral\".  Richard is a collaborator on\nseveral side projects involving POE.  His work provides valuable testing and feedback from\na user's point of view.\n\nDennis Taylor\nDennis Taylor is <dennis@funkplanet.com>.  Dennis has been testing, debugging and patching\nbits here and there, such as Filter::Line which he improved by leaps in 0.1102.  He's also\nthe author of POE::Component::IRC, the widely popular POE-based successor to his wildly\npopular Net::IRC library.\n\nDavid Davis\nDavid Davis, aka Xantus is <xantus@cpan.org>.  David contributed patches to the HTTPD\nfilter, and added CALLERSTATE to POE::Session.  He is the author of Sprocket, a networking\nframework built on POE.\n\nOthers?\nPlease contact the author if you've been forgotten and would like to be included here.\n"
                    },
                    {
                        "name": "Author",
                        "content": "Rocco Caputo\nRocco Caputo is <rcaputo@cpan.org>.  POE is his brainchild.  He wishes to thank you for\nyour interest, and he has more thanks than he can count for all the people who have\ncontributed.  POE would not be nearly as cool without you.\n\nExcept where otherwise noted, POE is Copyright 1998-2013 Rocco Caputo.  All rights\nreserved.  POE is free software; you may redistribute it and/or modify it under the same\nterms as Perl itself.\n\nThank you for reading!\n\n\n\nperl v5.30.0                                 2020-02-07                                     POE(3pm)"
                    }
                ]
            }
        }
    }
}