我正在使用以下命令从我的主脚本中调用一个子脚本:
system 1, "perl C:\\test.pl";
我想知道如何从上面的子脚本返回一个值到我的主脚本?有人可以帮忙吗?
您应该改为使用管道打开子 perl 并读取它打印到标准输出的内容:
open(F, "-|", 'perl C:\test.pl') or die;
my $data = <F>; # Gets one line of output.
要使用system
,您必须自己设置管道或套接字连接,这有点涉及,或者使用文件来传递数据。
显示父母和孩子并行运行的小测试。在child.pl
,
# Simulate a long computation
for ('a'..'k') {
print STDERR "$_ ";
sleep 1;
}
# This goes to the pipe.
print "Hello world! ";
在parent.pl
,
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;
然后:
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!