use IPC::Open2; local(*HIS_OUT, *HIS_IN); # Create local handles if needed. $childpid = open2(*HIS_OUT, *HIS_IN, $program, @args) or die "can't open pipe to $program: $!"; print HIS_IN "here's your input\n"; $his_output = ; close(HIS_OUT); close(README); waitpid($childpid, 0);