in reply to Re: Invoking, issuing commands to, and passing control to an interactive shell...
in thread Invoking, issuing commands to, and passing control to an interactive shell...

Instead of 'the app' let's use fdisk.

From a Perl program, you can call fdisk and then feed commands at fdisk and wait for what fdisk has to say about it, look at that, and feed some more. This way you can, for instance, partition a drive from a Perl program (assuming you have the rights to do that).

If you don't expect anything afterwards from 'the app' then just feed it your initial stuff and that's it, go do something else.

As pointed at in other replies, use Expect. You can find it on CPAN. It's basically like this:

- launch your app

- wait for its prompt (timeout-controlled)

- feed your app some string

The pipe/IPC approach either handmade or using CPAN IPC modules is also very interesting, but if you just want to get on with it and do somethign else, then use Expect.

  • Comment on Re^2: Invoking, issuing commands to, and passing control to an interactive shell...