I second it. It makes sense to have network protocol since you are going to have several different clients (as you have said). Just want to note that IO::Socket could be too low level. If you don't have any serious perfomance requirements take a look at SOAP. There exist very nice module SOAP::Lite which makes writting SOAP servers and clients very simple.