Perl:着色术语:: Readline消息,同时保持下划线装饰(以及可能的其他)

时间:2013-08-29 23:52:34

标签: perl readline

我希望Term::Readline使用丰富多彩的提示,其中包含以下内容:readline("foo" . colored("bar", "red") . "baz")

我找到了Term::ANSIColor,看起来很有希望。但是,它确实可以清除所有颜色或下划线,即colored("some text", "red")

这很糟糕,因为  readline生成的提示包含下划线。有时,就是这样。

我猜colored不知道之前应用了什么格式,我无法确定Colorstacks, mentioned in the documentation是否会对我有所帮助。该文档只有直接print内容的例子,并且是最好的 - 不适合像我这样的Perl新手。

问题是由readline生成的提示看起来不一致,因为它首先加下划线并且在彩色部分之后,下划线消失了:

perl and colours

我可以阅读似乎与下划线相关的“饰品”,如下面的代码所示:

#!/usr/bin/env perl
use Term::ReadLine;
use Term::ANSIColor;

my $term;

sub prompt {
    $term = new Term::ReadLine 'colourtest'
        unless $term;
    print "My ornaments: " . $term->ornaments . "\n";
    my $answer = $term->readline(@_);
    # readline turns off autoflush, re-enable it
    $| = 1;
    return $answer;
}
prompt("Underlined " . 
    colored("followed by colour", "red") . 
    " then plain");

我想我的问题是:我可以Term::ANSIColorreadline一起使用,以便colored回退到以前应用的格式吗?

0 个答案:

没有答案