If you don't like pipes there are other solutions, one is shared memory.
tie a hash into shared memory using IPC::Shareable and used that.
Also looking into
Network Programming with Perl would be a good idea. It's a really good book and has several good examples of TCP Servers including a chat server.
"Nothing is sure but death and taxes" I say combine the two and its death to all taxes!