use IPC::Open3; local(*START_IN, *START_OUT, *START_ERR); my $childpid = open3(*START_IN, *START_OUT, *START_ERR, 'external.sh'); while () { print; if (/Question1/) { print START_IN "Answer1"; } elsif (/Question2/) { print START_IN "Answer2"; } }