Согласно manual синтаксисе IPC::Open3::open3
являетсяСинтаксис команды open3
$pid = open3(\*CHLD_IN, \*CHLD_OUT, \*CHLD_ERR, 'some cmd and args', 'optarg', ...);
Я смущен относительно первых трех параметров. Эти ссылки на typeglobs?
Я попытался следующие:
my $pid=open3("STDIN", "STDOUT", "STDERR", $cmd);
my $pid=open3(*STDIN, *STDOUT, *STDERR, $cmd);
my $pid=open3(\*STDIN, \*STDOUT, \*STDERR, $cmd);
my $pid=open3('<&STDIN', '>&STDOUT', '>&STDERR', $cmd);
но только номер 4, казалось, работало. Согласно руководству, я думал, что номер 3 также должен работать. Например:
use warnings;
use strict;
use feature qw(say);
use IPC::Open3;
my $cmd="sleep 1; echo This STDOUT; sleep 1; echo 'This is STDERR' 1>&2; sleep 1; echo -n 'Reading STDIN: '; read a";
my $pid=open3('<&STDIN', '>&STDOUT', '>&STDERR', $cmd);
say "Waiting for child..";
wait;
say "Done.";
Спасибо за приятное объяснение! Думаю, я должен получить концепцию сейчас :) –