in reply to Using Sockets

The problem is here:
local $/; my $data = <$fh>;
This slurp mode means that the read won't return until end of file on $fh. If you want to read everything that's available, use read or sysread. When read or sysread returns false (0 or undef), you have reached end of file (i.e. socket close).