Well you can actually do this, but the client needs to support using the object as a
Flyweight object. This is exactly why the Perl client worked, as it does support flyweights directly - most (maybe all) other SOAP implementations don't, so you have to implement that yourself.
Basically all a flyweight does in this case is holds an object ID, and on the server end the SOAP server holds a list of pre-constructed objects matched to IDs. When your client wants to call a method on that object-id, AUTOLOAD kicks in and asks the remote end for the right method on the object matching that id value.
Then there's some stuff about Object reaping that you don't need to worry too much about.
Hope that helps - the soaplite list is a really good place to ask these sorts of questions.