代码之家  ›  专栏  ›  技术社区  ›  PJ.

如何在Perl中捕获pkgrm的输出?

  •  -2
  • PJ.  · 技术社区  · 16 年前

    NewPackage . 为此,我使用命令:

    pkgrm NewPackage
    

    如果我想在Perl程序中卸载同一个包,我应该如何将STDOUT消息重定向到一个文件,以便在执行结束时可以转到该文件并验证该文件。不久,我尝试了以下命令,但没有成功:

    open (FD, "/usr/tmp/result.txt");
    $input1 = <FD>;
    $input2 = <FD>;
    system("pkgrm NewPackage" < $input1);
    

    但不知道如何传递第二个输入。

    请告知如何进行。

    2 回复  |  直到 16 年前
        1
  •  2
  •   daotoad    16 年前

    一般来说:

    不管怎样,你都需要更明确地定义你想做什么。

    是否要运行命令并将其STDOUT转储到文件:

    `pkgrm $package > $outfile`;
    

    `pkgrm $package >> $outfile`;
    

    或者,您是否希望捕获结果并查看程序中发生了什么:

    open( my $result_fh, '>', $outfile ) or die "can't open logfile - $!\n";
    my $output = `pkgrm $package`;
    if( $oupt =~ /happiness/) {
       print $result_fh "hooray!\n", $output;
    }
    else {
    
       print $result_fh "uh oh\n", $output;
    } 
    

    还是需要监控标准错误?

    在这些情况下 see perlfaq8 .