Coro::Select - a (slow but coro-aware) replacement for CORE::select


 use Coro::Select;          # replace select globally
 use Core::Select 'select'; # only in this module
 use Coro::Select ();       # use Coro::Select::select


This module tries to create a fully working replacement for perl's select built-in, using AnyEvent watchers to do the job, so other coroutines can run in parallel to any select user. As many libraries that only have a blocking API do not use global variables and often use select (or IO::Select), this effectively makes most such libraries "somewhat" non-blocking w.r.t. other coroutines.

To be effective globally, this module must be use'd before any other module that uses select, so it should generally be the first module use'd in the main program.

You can also invoke it from the commandline as perl -MCoro::Select.

Performance naturally isn't great, but unless you need very high select performance you normally won't notice the difference.




 Marc Lehmann <>