in reply to Confusion with two-way pipes

There is the IPC::Open2 (and the Open3) module in core to make this more painless, but if you're going to write the output of the process to stdout or another file you could use a simple piped open like this:
open PIPE, "|program >$file"; print PIPE "testing. output will go to $file, since perl will pass th +e command line though the shell\n";

--
integral, resident of freenode's #perl