我正在尝试使用系统调用从Perl打开外部命令。我在Windows上工作。我怎样才能一个接一个地传递参数呢?
例如:
system("ex1.exe","arg1",arg2",....);
这里ex1.exe
是外部命令,我希望它首先处理arg1然后再处理arg2等等......
感谢您的回复,
答案 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);
}