通过管道将参数一个接一个地传递给系统的外部命令

时间:2010-10-26 22:01:42

标签: windows perl

我正在尝试使用系统调用从Perl打开外部命令。我在Windows上工作。我怎样才能一个接一个地传递参数呢?

例如:

system("ex1.exe","arg1",arg2",....); 

这里ex1.exe是外部命令,我希望它首先处理arg1然后再处理arg2等等......

感谢您的回复,

2 个答案:

答案 0 :(得分:7)

使用pipe open

use strict; 
use warnings;

{
    local ++$|;

    open my $EX1_PIPE, '|-', 'ex1.exe' 
        or die $!;

    print $EX1_PIPE "$_\n"
        for qw/arg1 arg2 arg3/;

    close $EX1_PIPE or die $!;
}

我假设您想要将数据传输到ex1.exe的STDIN;例如,如果ex1.exe是以下perl脚本:

print while <>;

然后,如果你运行上面的代码,你的输出应该是:

arg1
arg2
arg3

答案 1 :(得分:1)

您是否尝试为每个参数执行一次ex1.exe?类似于:

> ex1.exe arg1
> ex1.exe arg2
> ex1.exe arg3

如果是这样,你会这样做:

for my $arg (@args)
{
   system( 'ex1.exe', $arg);
}