use IPC::Open2 qw( open2 ); my @cmd = ( sqlplus => ( '-S', '/as' => 'sysdba', ) ); local *TO_SQLPLUS; my $pid = open2('>&STDOUT', *TO_SQLPLUS, @cmd) or die("Can't launch sqlplus: $!\n"); print TO_SQLPLUS <<'__EOI__'; ... foo bar ... __EOI__ close(TO_SQLPLUS); waitpid($pid,0);