Do the client using in a Perl terminal (curses) application using
Curses or
POE::Wheel::Curses
just to prove you're hardcore...
Seriously, though, I'd do the client in Java (for portability and the GUI capabilities) and the server in Perl - you should be able to find a messaging protocol that's been implemented in both (
BEEP is a possibility, although it may be overkill) or in C (in which case you can use
SWIG to wrapper it in both languages).