【问题标题】:Perl - Need to call system('diff') over and overPerl - 需要一遍又一遍地调用 system('diff')
【发布时间】:2019-04-20 18:23:45
【问题描述】:

我有一个批处理系统,需要一遍又一遍地运行相同的 shell 命令。

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

这有点慢,所以我想知道是否有某种方法可以使 shell 或程序持久化(或其他东西),这样它就不会每次都有很大的开销。

请注意,我不能真正考虑编写自己的 diff 函数,因为实际输出需要看起来确实来自该程序。

提前致谢!

【问题讨论】:

    标签: perl system diff


    【解决方案1】:

    我想知道是否有某种方法可以使 shell 或程序持久化(或其他东西),这样它就不会每次都产生很大的开销。

    不是真的。 diff 本质上是一种一次性工具;它没有任何持久模式。

    不过,您可能想看看Text::Diff 模块。它可以生成与diff 实用程序相同格式的输出。

    【讨论】:

    • Algorithm::Diff 为 Text::Diff 工作,它是用 Perl 编写的。它不会更快
    • @ikegami 还有Algorithm::Diff::Xs
    • @ikegami 如果文件都很小,在进程中运行比较可能仍然是一个改进。如果 OP 位于启动进程缓慢的操作系统(如 Windows)上,则尤其如此。
    猜你喜欢
    • 1970-01-01
    • 2015-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-12
    相关资源
    最近更新 更多