我希望Term::Readline
使用丰富多彩的提示,其中包含以下内容:readline("foo" . colored("bar", "red") . "baz")
我找到了Term::ANSIColor
,看起来很有希望。但是,它确实可以清除所有颜色或下划线,即colored("some text", "red")
。
这很糟糕,因为
readline
生成的提示包含下划线。有时,就是这样。
我猜colored
不知道之前应用了什么格式,我无法确定Colorstacks, mentioned in the documentation是否会对我有所帮助。该文档只有直接print
内容的例子,并且是最好的 - 不适合像我这样的Perl新手。
问题是由readline
生成的提示看起来不一致,因为它首先加下划线并且在彩色部分之后,下划线消失了:
我可以阅读似乎与下划线相关的“饰品”,如下面的代码所示:
#!/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::ANSIColor
与readline
一起使用,以便colored
回退到以前应用的格式吗?