You are missing a critical point... qx/COMMANDLINE/ or system("COMMANDLINE") invokes /bin/sh with the -c option like so: (on WIN32, this is of course a little different)
execl("/bin/sh", "-c", COMMANDLINE);
The quotes in COMMANDLINE are not being ignored or parsed by Perl. They are being handled by /bin/sh. Notice that at a /bin/sh prompt, if you were to type:
$ echo "Hello World" Hello World
For the original example, the poster was trying to do:
$ SQLCOMMAND; | sqlplus ...It should have been:
$ echo "SQLCOMMAND;" | sqlplus ...The shell uses the quotes to group arguments. The quotes are not passed through to the command (again, under WIN32, this is a little more convoluted).
The original problem posted was two-fold. First, as the initial responder suggested, the poster should have used 'echo "SQLCOMMAND;"' not 'SQLCOMMAND;'. As a later responder suggested, the poster should not be using both qx// and system() as both will execute the command. Either system() should be used if the output does not need to be intercepted, or qx// should be used if the output does need to be intercepted.
In reply to Re: Re: Re: PIPE problem
by MarkM
in thread PIPE problem
by suekawar
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |