in reply to line-at-a-time socket selects

select doesn't process or analyse data in any way. You can buffer and split incoming data into lines yourself or use something like AnyEvent::Handle