This approach won't work. The backticks are blocking the execution and you
need to provide the input. So it's a dead-lock. Better to look at perlipc.
Though the most generic approach is use of pipes and forks. The "open" command
with "-|" or "|-" is very convinient for this. For example
# this makes the fork and pipes STDOUT of child to OUTPUT of parent.
my $pid = open(OUTPUT, "-|");
if($pid == 0)
{
# we are in child now. To provide input I need another fork.
# This time the STDIN of child is piped from INPUT of this process
+.
my $another_pid = open(INPUT, "| another_script_or_program");
# now check the return value and pass the input thru INPUT
print INPUT "my input\n";
exit(0);
}
# the main process just reads data from OUTPUT
print while(<OUTPUT>);
# do waitpid
close(OUTPUT);