Perl - нужно снова и снова вызывать систему ('diff') - PullRequest
2 голосов
/ 20 апреля 2019

У меня есть система пакетной обработки, которая должна запускать одну и ту же команду оболочки снова и снова.

while (x)
{
  if (y)
  {
    $diff = `diff $f1 $f2`;
    ...
  }
  else
  {
    ...
...

Это немного медленно, поэтому мне интересно, есть ли какой-нибудь способ сделать оболочку или программу постоянными (или что-то в этом роде) так, чтобы они не каждый раз вызывали большие издержки.

Обратите внимание, что я не могу даже написать свою собственную функцию diff, поскольку фактический результат должен выглядеть так, как будто он получен из этой программы.

Заранее спасибо!

1 Ответ

6 голосов
/ 20 апреля 2019

Мне интересно, есть ли какой-нибудь способ сделать оболочку или программу постоянными (или что-то в этом роде), чтобы у них не было больших накладных расходов каждый раз.

Не совсем. diff по своей сути является инструментом с одним выстрелом; в нем нет постоянного режима.

Однако вы можете захотеть взглянуть на модуль Text :: Diff . Он может генерировать выходные данные в том же формате, что и утилита diff.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...