Обратите внимание, что на самом деле ничто не мешает вам использовать PoCo-IRC или BasicBot. Да, они работают под управлением POE, но у POE нет для контроля над всем вашим приложением.
Если вы просто подключаетесь, выполняете какие-то действия в IRC, отключаетесь и делаете другие вещи, вы можете просто убедиться, что сеанс IRC уничтожается сам по себе - когда не осталось ни одного сеанса, POE::Kernel->run
будет вернуть управление обратно к вашей программе.
Если вы имеете дело с более долгоживущим соединением, но все еще хотите изменить управление, POE предоставляет run_one_timeslice
и run_while
методы, которые дают вам точный контроль над тем, когда и где работает POE. Конечно, вы должны организовать его запуск по крайней мере достаточно часто, чтобы он реагировал на любые PING-адреса сервера и предотвращал заполнение буферов сокетов.
На самом деле, Net :: IRC делает то же самое, захватывая ваше приложение своим собственным циклом событий - за исключением того, что это не именованная вещь, такая как POE или AnyEvent - это просто "цикл событий Net :: IRC". Это не значит, что вам нужно полное переписывание для работы с Net :: IRC, и это не значит, что вам нужно полное переписывание для работы с POE :)