[sf-perl] capture stdout and stderr, possibly supply input

Philip J. Hollenback philiph at pobox.com
Thu Jun 23 17:40:10 PDT 2011

I am writing a perl script that needs to invoke an external program and
collect the stdout and stderr of that program.  I also need to check the
return code.

That's all pretty simple to do in a few ways, for example I tried
IO::CaptureOutput and it works fine.

My complication is that this external program may stop and ask for a
password.  If that happens, I need to get a password from the user and
feed it to the external program to continue.  Then I can capture the
output I need after that (the password prompt will always happen before
all other output).  Thus I can't really use IO::CaptureOutput because it
will halt and wait for the password input without displaying anything on
stdout (since I'm already capturing stdout).

I assume I can do this all with Expect.pm, but I wonder if anyone can
think of a simpler way to deal with this one special input case.

Or alternately, am I just missing something obvious?

Philip J. Hollenback
philiph at pobox.com

More information about the SanFrancisco-pm mailing list