http://www.perlmonks.org?node_id=1032630


in reply to Re: ClearCase Command text in Backticks is ignored
in thread ClearCase Command text in Backticks is ignored

Hi Ken,

Thanks so much for your fast reply. Escaping the back slashes in the format option worked! The output using system does the format properly now. Code:
$output = system("cleartool lsco -r -brt p_JOESDRUGS_DT_Int -fmt \"%En +\\t%u\\n\"");

The zero is still at the end, but I can always chop that off. Output:

.\EDC_Export\Test_file2.txt mkjohnson .\EDC_Export\Test_file3.txt mkjohnson 0

However, I still haven't solved the first issue. I tried your advice, and this solves the problem of recognizing the content of $stream, but the command fails. I also tried it with including the double quotes escaped:

$output = system('cleartool', 'lsco', '-r', '-brt', $stream, '-fmt', ' +\"%En\\t%u\\n\"');

But that still fails. However, a different failure, so I'm getting closer. It's a cleartool error and it reveals it can read $stream. Output:

cleartool: Warning: Type not found: "p_JOESDRUGS_DT_Int". 0

So I am getting closer. I will try playing around with this combination, but any further advice would be greatly appreciated. Thanks again.

Replies are listed 'Best First'.
Re^3: ClearCase Command text in Backticks is ignored
by kennethk (Abbot) on May 08, 2013 at 16:41 UTC
    The zero is still at the end, but I can always chop that off
    If your code is essentially
    my $output = system(...); print $output;
    then you should note that system returns the status code returned by the call, not the output of the call. There's no reason to do the print, and probably no reason to capture the return.
    I also tried it with including the double quotes escaped
    The question I should have included up front is "What is the exact syntax that works on the command line?" If you pass system '\"%En\\t%u\\n\"', I believe it should be equivalent to entering '\\"%En\\t%u\\n\\"' on the CLI, which I think is unlikely to be what you intend.

    #11929 First ask yourself `How would I do this without a computer?' Then have the computer do it the same way.