Простой вопрос, но я не могу найти хороший ответ - здесь идет с примером:статус Выход ребенка породил в трубе
«world.pl» нерестится «hello.pl» в детстве и обрабатывает его стандартный вывод. «world.pl» должен знать статус выхода «hello.pl». Выполнение системного вызова не является вариантом, так как «world.pl» необходимо обработать стандартное «hello.pl». Я также пытаюсь избежать fork(). Вопрос: Как «world.pl» может найти статус выхода «hello.pl»? Используя perl v5.12.4 на Дарвине, если это имеет значение. Спасибо заранее, - М.
#!/opt/local/bin/perl -w
## hello.pl <name> [more names]
exit 1 if ($#ARGV < 0);
foreach (@ARGV) { print "Hello, $_\n" }
exit 0;
Другая часть ...
#!/opt/local/bin/perl -w
## world.pl name [more names ...]
open (FP, "./hello.pl @ARGV |") or die "$0: Cannot open pipe: $!\n";
while (<FP>) { print }
close FP;
my $status = 0; # Want this to be exit status of the process "hello.pl"
exit $status;
Попробуйте RUN3: http://search.cpan.org/~rjbs/IPC-Run3-0.046/lib/IPC/Run3.pm – ceving
'Выход 1, если ($ # ARGV <0); 'можно написать' exit 1 if! @ARGV; ' – ikegami