in reply to IPC::Run syntax question

My version of IPC::Run (0.78) has the following example in the documentation:

## First,a command to run: my @cat = qw( cat ) ; ## Using run() instead of system(): use IPC::Run qw( run timeout ) ; run \@cmd, \$in, \$out, \$err, timeout( 10 ) or die "cat: $?" # Can do I/O to sub refs and filenames, too: run \@cmd, "in.txt", \&out, \&err or die "cat: $?" run \@cat, "in.txt", '>>', "out.txt", '2>>', "err.txt" ; # Redirecting using psuedo-terminals instad of pipes. run \@cat, '<pty<', \$in, '>pty>', \$out_and_err ;

so, yes, @cat needs to be filled with the command and the arguments of the thing you want to run.

But if you're trying some basic things, why dabble with IPC::Run if the plain system() call or backticks can do your work already? What do you want to do?

Replies are listed 'Best First'.
Re^2: IPC::Run syntax question
by tlemons (Novice) on Feb 14, 2005 at 14:38 UTC
    Hi

    Thanks very much for the reply. Putting the command and its arguments into an array that becomes the first argument to 'run' is now obvious; thanks for pointing that out!

    I wish I could use something simpler than IPC::Run, but I don't think I can (please tell me I'm wrong).

    I need to run a program, and then do things with the program's output. So, system() (which doesn't allow this) isn't the right tool.

    Worse, I need to feed responses to the program as it runs. Backticks doesn't support this.

    I had initially looked at Open2(), but that didn't work on Windows XP. So, I'm trying IPC::Run, as it SEEMS to be the best solution.

    I'd very much value the opinion of others with more Perl experience than me (which, at this point, includes many house plants).

    Thanks! tl

      Greetings, esteemed monks!

      I assume you also looked into open3? _________________________________________________________________________________
      Without me, it's just aweso