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

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.