Perl-使用system 1方法从子级返回

Perl-使用system 1方法从子级返回,perl,command,Perl,Command,我正在使用以下命令从主脚本调用子脚本: system 1, "perl C:\\test.pl"; 我想知道如何将上述子脚本中的值返回到主脚本中? 有人能帮忙吗?您应该用管道打开子perl并读取它打印到标准输出的内容: open(F, "-|", 'perl C:\test.pl') or die; my $data = <F>; # Gets one line of output. 在parent.pl中 # Simulate a long computation for (

我正在使用以下命令从主脚本调用子脚本:

system 1, "perl C:\\test.pl";
我想知道如何将上述子脚本中的值返回到主脚本中?
有人能帮忙吗?

您应该用管道打开子perl并读取它打印到标准输出的内容:

open(F, "-|", 'perl C:\test.pl') or die;
my $data = <F>;  # Gets one line of output.
parent.pl

# Simulate a long computation
for ('a'..'k') {
  print STDERR "$_ ";
  sleep 1;
}
# This goes to the pipe.
print "Hello world! ";
open(F, "-|", 'perl child.pl') or die;
# Child is running.  Do a long computation in the parent.
for (1..10) {
  print STDERR "$_ ";
  sleep 1
}
# Now get the final value from the child's pipe.
my $data = <F>;
print STDERR $data;
close F;

您是指命令的退出状态吗?或者命令的输出?
system 1,…
是Windows黑客“在后台”运行命令。使用“System1”,我创建了一个子脚本,它可以与主脚本并行运行。我需要以这种方式知道我的孩子是否可以向我的主脚本返回一个值?实际上,我想让孩子与我的主脚本并行运行。我使用“系统1”来实现它。这样,我的孩子就从paraller开始,同时我也开始写我的主脚本。我想知道当child完成了它的任务时,它是否可以向主脚本重新运行一个值?您可以在我的代码中并行运行parent和child。父级将不会阻止,直到它尝试从子级读取值,并且还没有写入任何内容。子级将生成输出,直到管道缓冲区已满。无论使用何种方法,父进程和子进程都必须会合,才能通过缓冲区以这种方式交换数据。@user2684591我改为代码,以显示两个进程在会合之前是如何并行运行的。
C:\tmp>perl parent.pl
1 a 2 b 3 c 4 d 5 e 6 f 7 g 8 h 9 i 10 j k Hello world!