Short answer, details about "Inter Process Communication" is found in
perlipc.
Longer answer: it depends what you want to communicate, and at which time. Signalling a single bit can be done by sending a signal. You have 8 bits of communication on program exit: the exit value of your program can be waited on by the parent process. Parent and child can share a pipe or a socket, and communicate via the pipe. Two (or more) processes can use shared memory to exchange messages. If messages are important, and should not be lost even if one of the processes goes belly up, you may want to use a message queue. Perhaps you want to piggyback on an existing frame work to exchange information in the form of a server/client relation: HTTP, FTP, etc, or something that's implemented on top of such a protocol, like SOAP. Or if the data needs to be persistent, you might want to use a database.
I'm sure that for whatever method you pick, you'll be able to find both Perl and Java modules doing the grunt work.