【问题标题】:Perl text diff colorPerl 文本差异颜色
【发布时间】:2012-05-05 01:39:26
【问题描述】:

我希望能够比较两个文本字符串并显示颜色差异。我尝试了String::Diff,但无法以颜色显示差异。我正在使用带有 Active State perl 5 版本 12 的 Windows。

编辑:ansi 颜色等无法帮助我显示颜色差异
编辑:这是我想要的结果

$string1 = "这是字符串 1" ; $string2 = "这是字符串 2" ; some_diff_cmd($string1,$string2) ;

我想要的输出(粗体条目应该是红色)

### 字符串不匹配####

string1 = 这是字符串 1
string2 = 这是字符串 2

【问题讨论】:

标签: string perl colors diff


【解决方案1】:

这个怎么样?

use Win32::Console::ANSI;
use String::Diff qw( diff );

my @strings = (
  'This is string 1', 'This is string 2'
);

my $BOLD_RED_MARK = "\e[1;31m"; # or \e[0;31m, if bold is not required
my $RESET_MARK    = "\e[0m";

my $diff = String::Diff::diff(@strings,
   remove_open  => $BOLD_RED_SIGN,
   remove_close => $RESET_SIGN,
   append_open  => $BOLD_RED_SIGN,
   append_close => $RESET_SIGN,
);

print $diff->[0], "\n";
print $diff->[1], "\n";

【讨论】:

  • 非常酷,几乎就是我想要的。接受的答案,加 1。脚本没有按原样工作;可能与转义序列有关。但是一旦我用双引号中的颜色转义序列值替换了“*_SIGN”变量,它就可以正常工作了。谢谢!
  • 啊,当然应该插值。我写的时候没办法检查代码...会相应地更新答案。
  • 我会使用 Term::ANSIColor 而不是自己制定转义序列。
猜你喜欢
  • 2020-07-30
  • 2011-08-09
  • 1970-01-01
  • 2014-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-01
  • 2013-02-02
相关资源
最近更新 更多