in reply to yes/no prompt
Check out the faq entry
8.25: How can I capture STDERR from an external command?
You can also use the Searchbox and search for "IPC".
A super-simplified barebones example is below. IPC::OPen3 may not work in your particular case, and there can be many reasons why. In a real situation, you need to process the STDOUT and STDERR outputs with alot of regex's, then determine what reply to send to STDIN.
#!/usr/bin/perl use warnings; use strict; use IPC::Open3; #interface to "bc" calculator #my $pid = open3(\*WRITE, \*READ, \*ERROR,"bc"); my $pid = open3(\*WRITE, \*READ,0,"bc"); #if \*ERROR is false, STDERR is sent to STDOUT while(1){ print "Enter expression for bc, i.e. 2 + 2\n"; chomp(my $query = <STDIN>); #send query to bc print WRITE "$query\n"; #give bc time to output select(undef,undef,undef,.5); #get the answer from bc chomp(my $answer = <READ>); print "$query = $answer\n"; } waitpid($pid, 1); # It is important to waitpid on your child process, # otherwise zombies could be created.
|
|---|