如何在Perl中获取Win32 :: Process命令的输出?

use*_*686 2 windows perl

我正在使用use Win32::Process我的应用程序运行如下.它运行正常,但我没有任何办法将输出到.txt文件.

我使用NORMAL_PRIORITY_CLASS而不是CREATE_NEW_CONSOLE来获取同一终端本身的输出,但我不知道如何将其重定向到txt文件.

/岩石

#!/usr/bin/perl

use strict;
use warnings;
use Win32::Process;

Win32::Process::Create(my $ProcessObj,
                       "iperf.exe",
                       "iperf.exe -u -s -p 5001",
                       0,
            NORMAL_PRIORITY_CLASS,
                       ".") || die ErrorReport();
my @command_output;

push @command_output,$ProcessObj;

open FILE, ">zz.txt" or die $!;
print FILE @command_output;
close FILE;

sleep 10;
$ProcessObj->Kill(0);

sub ErrorReport{
    print Win32::FormatMessage( Win32::GetLastError() );
}
Run Code Online (Sandbox Code Playgroud)

Sch*_*ern 5

Win32 :: Process是其中一个模块,它基本上是Perl的Win32 API的直接端口,因此对Perl程序员来说没什么意义.除非你想做一些特定于Windows的事情,否则有更好的方法.

如果您只想获得进程的输出,则可以使用Perl的反引号正常运行它.

my $output = `iperf.exe -u -s -p 5001`;
Run Code Online (Sandbox Code Playgroud)

如果你想获得花哨,例如后台处理进程并捕获其输出,我建议使用IPC :: Run.