I don't think this really matters, but you could try coding the socket the long way (no IO::Socket::INET) on the off chance that something is goofed there. You might also try closing the send connection with shutdown() before attempting to read on the chance that it might clear something.