use IPC::Open2; my $infile = shift; open (INFILE, "<$infile"); my $output; my $input; { local $/ = undef; $input = ; } my $pid = open2(*README, *WRITEME, 'progam.exe'); print WRITEME "$input"; { local $/ = undef; $output = ; } close(README); close(WRITEME); waitpid($pid, 0); print "$output";