从程序中捕获标准到文件类对象?

时间:2012-01-16 18:24:13

标签: perl

我正在尝试将命令的标准输出捕获到Perl中的类文件对象。

我基本上需要做以下事情:

  1. 执行OS命令,捕获标准输出。
  2. 在文件的每一行上运行正则表达式并将输出拉入数组。
  3. 为第一个命令的输出行数组中的每个项调用另一个OS命令。
  4. 我该如何做第一步?我想执行一个命令并在文件对象中获取它的标准,以便能够逐行读取它。

2 个答案:

答案 0 :(得分:4)

第一部分很简单:

use autodie qw(:all);
open my $input, '-|', 'os-command', @args;

显然,其余部分并不难:

while (<$input>)
{
     next unless m/your regex/;
     system 'other-command', $_;
}

通过autodie提供opensystem来电的自动错误检查。

答案 1 :(得分:0)

您可以这样做:

my @input = qx( some_command );
for my $line (@input) {
    $line =~ m{some_pattern} and system("some_command", "$line");
}