Quite right. IO::Select, passes the timeout straight through to the select function, which expects the units to be seconds, and can accept fractional quantities (e.g. 0.5).
I've updated the code above.
Comment on Re^3: Chunked unix socket file reading - how?