in reply to win32 pipe help

It seems you are confusing pipes (sending and/or receving via stdin and stdout of the child program) and command line parameters. open(FH, "| xx.exe"); print FH ("word_up"); would send it to the xx.exe's STDIN, but you mentioned it was a command line argument. You could pass it as an argument by doing open(FH, "| xx.exe word_up");.

However, I'm not sure if open(FH, "|..."); will do what you want (since I don't know what xx.exe does). Check out the following:

open(FH, "|...");: Can send command line arguments. Can send commands/data to the child's STDIN, but it's output is not collected. Child operates in parallel with parent.

open(FH, "...|");: Can send command line arguments. Nothing sent to the child's STDIN, but it's output is collected. Child operates in parallel with parent.

system(): Can send command line arguments. Nothing sent to to child's STDIN. No output is received from the child. The child exits before the parent continues.

`` (backticks): Can send command line arguments. Nothing sent to to child's STDIN, but it's output is collected. The child exits before the parent continues.

Win32::Process (Win32::Spawn is deprecated): Can do anything!