这个Perl程序能在Windows上运行吗?
我试图在Windows上用Perl脚本打开多个进程。程序结构看起来像这样这个Perl程序能在Windows上运行吗?,perl,Perl,我试图在Windows上用Perl脚本打开多个进程。程序结构看起来像这样 my($chld1_out, $chld1_in); my($chld2_out, $chld2_in); my($chld3_out, $chld3_in); my @cmds1=(); my @cmds2=(); my @cmds3=(); $pid1 = open2($chld1_out, $chld1_in, 'ex1.exe')or die $!; $pid2 =
my($chld1_out, $chld1_in);
my($chld2_out, $chld2_in);
my($chld3_out, $chld3_in);
my @cmds1=();
my @cmds2=();
my @cmds3=();
$pid1 = open2($chld1_out, $chld1_in, 'ex1.exe')or die $!;
$pid2 = open2($chld2_out, $chld2_in, 'ex2.pl')or die $!;
$pid3 = open2($chld3_out, $chld3_in, 'ex3.exe')or die $!;
print $chld1_in $cmds1[0];
print $chld2_in $cmds2[0];
$op1=<$chld1_out>;
$op2=<$chld2_out>;
if ( $op1 == 'done' && $op1 != 'done')
print $chld1_in $cmds1[0];
elsif ( $op1 != 'done' && $op1 == 'done')
print $chld2_in $cmds2[0];
elsif ( $op1 == 'done' && $op1 == 'done')
print $chld1_in $cmds1[1];
print $chld2_in $cmds2[1];
.....
.....
for loops and while loops..... to process with the data output... and do conditional programming.
close $pid1 or die $!;
close $pid2 or die $!;
close $pid3 or die $!;
my($chld1\u out,$chld1\u in);
我的($chld2_out,$chld2_in);
我的($chld3_out,$chld3_in);
my@cmds1=();
my@cmds2=();
my@cmds3=();
$pid1=open2($chld1_out,$chld1_in,'ex1.exe')或die$!;
$pid2=open2($chld2_out,$chld2_in,'ex2.pl')或die$!;
$pid3=open2($chld3_out,$chld3_in,'ex3.exe')或die$!;
在$cmds1[0]中打印$chld1_;
在$cmds2[0]中打印$chld2_;
$op1=;
$op2=;
如果($op1=='done'&&$op1!='done')
在$cmds1[0]中打印$chld1_;
elsif($op1!=“完成”&&$op1==“完成”)
在$cmds2[0]中打印$chld2_;
elsif($op1=='done'&&$op1=='done')
在$cmds1[1]中打印$chld1_;
在$cmds2[1]中打印$chld2_;
.....
.....
for循环和while循环。。。。。要处理数据输出。。。然后做条件编程。
关闭$pid1或死亡$!;
关闭$pid2或死亡$!;
关闭$pid3或死亡$!;
如果有,我如何执行Perl脚本(ex2.pl)
我知道的一个方法是
系统($^X,“ex2.pl”,“arg”)
如果你能尽快帮助我,我将不胜感激
谢谢
-Abishek可能不是,“开启”阅读过程通常是幕后的一个岔口和一个管道。而且fork执行器在Windows*上不工作
要执行Perl脚本,只需执行它
如果要传递参数,请执行以下操作:
{ local @ARGV = qw<One Two Three>;
do 'ex2.pl';
}
*-我一直认为,使用Windows进程结构可以找到合适的解决方案,该结构具有可读的stdout和stderr以及可写的stdin。如果您能为我指出解决方案,我会非常有帮助。。交互btw ex1.exe和ex3.exe将非常好。因此,你的意思是,如果我安装草莓perl,上述程序将工作?????草莓perl有一个在windows下实现forks的技巧。我不确定它是如何工作的,可能是线程,或者是一些神奇的windows功能滥用。肯特:它使用的是ithreads,而不是特定于草莓Perl。它是核心的一部分,最初是由ActiveState的好人们(IIRC)组合而成的。这段代码要求重构。。。为什么不在这里使用子程序?
{ local @ARGV = qw<One Two Three>;
do 'ex2.pl';
}
{ local *ARGV = [ qw<One Two Three> ]; ... }