I use POE::Wheel::Run to spawn four Perl programs.
- A web server built from HTTP::Daemon. This provides a browser-based GUI. This web server also spawns programs that can get content from other web servers.
- A live link to a large CAD program.
- A live link to a large circuit simulator.
- A terminal that provides user messages and a command line, for development and for cases where the GUI doesn't have deep enough functionality.
I hadn't thought about this program as parallel processing until I saw your question. I have only recently begun running the application on multi-cpu machines.
The program uses message passing through several mechanisms:
- STDIN, STDOUT, and STDERR of child processes.
- Dropping files. The CAD package uses this for input.
- Web calls. I recently switched from LWP to curl because of deployment difficulties. I had trouble getting my installer to automate the configuration of LWP.
- Environment variables are used to send parameters into child programs. I had trouble with platform differences in the handling of command-line arguments. This is possibly due to differences in quoting and escaping.
It should work perfectly the first time! - toma