in reply to UNIX shell scripts + pipes

Without changing anything, you can use "-" as your input and output filenames when piping between scripts, which open inteprets as wanting to use STDIN or STDOUT depending on context.

perl ./program1 prog1.input - \ | perl ./program2 - - \ | perl ./program3 - prog3.output etc

Even better would be to add some logic to your scripts so that they defaulted to "-" automatically if filenames were absent, and then you could do ...

perl ./program1 prog1.input \ | perl ./program2 \ | perl ./program3 > prog3.output etc

    --k.