I assume that you left out the fact that you had the line
use IO::Select in your code. Its documentation tells us:
can_read ( "[ TIMEOUT ]" )
Return an array of handles that are ready for reading. "TIMEOUT" is
the maximum amount of time to wait before returning an empty list,
in seconds, possibly fractional. If "TIMEOUT" is not given and any
handles are registered then the call will block.
So, yes, it will block the way you call it. If you want it to not block, pass it a timeout. Just like the documentation says.
-- dug