这个Perl程序能在Windows上运行吗?

这个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 =

我试图在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 = 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> ]; ... }