Мое непосредственное предположение состоит в том, что сокет может находиться в режиме буферизации строки и ждет, пока вы напечатаете новую строку (или заполните буфер), прежде чем отправлять данные на другую сторону. Если это так, то print $sock "hello kitty\n";
должно работать так, как вы собираетесь.
Однако, как прокомментировал daxim, мы не можем быть уверены, не увидев весь соответствующий код, включая (но не ограничиваясь), как вы создаете сокет.