Захватывать стандарт из программы в файл-подобный объект? - PullRequest
1 голос
/ 16 января 2012

Я пытаюсь записать стандартный вывод команды в файл-подобный объект в Perl.

Мне необходимо сделать следующее:

  1. Выполнить команду ОС, захват стандартного вывода.
  2. Запустите регулярное выражение в каждой строке файла и извлеките вывод в массив.
  3. Вызовите другую команду ОС для каждого элемента в массиве строк вывода изПервая команда.

Как я могу сделать первый шаг?Я хотел бы выполнить команду и вывести ее стандарт в виде файла, чтобы иметь возможность читать ее построчно.

Ответы [ 2 ]

4 голосов
/ 16 января 2012

Первая часть проста:

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

Понятно, что остаток не намного сложнее:

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

Автоматическая проверка ошибок для вызовов open и system предоставляется через autodie.

0 голосов
/ 16 января 2012

Вы можете сделать:

my @input = qx( some_command );
for my $line (@input) {
    $line =~ m{some_pattern} and system("some_command", "$line");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...