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!
In reply to Re: win32 pipe help
by ikegami
in thread win32 pipe help
by perlmonkee
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |