如何在Perl中更改文本颜色?

时间:2019-07-10 20:07:03

标签: perl colors

我需要找到一种简单的方法来更改Perl中输出文本的颜色。我该怎么办?

print "Do you agree with me that I'm a Perl noob?";
print "> ";
chomp(my $question = <STDIN>);
if($question eq "yes") {
  print "You are smart!";
} if($question eq "no") {
  print "You stupid";
}

我只想更改颜色。没什么可说的。

1 个答案:

答案 0 :(得分:1)

未经测试的Windows部件:

use if 'MSWin32' eq $^O, 'Win32::Console::ANSI';
use Term::ANSIColor qw(:constants);

print BRIGHT_RED ON_BLUE "You are smart!\n";
print BOLD GREEN ON_WHITE "You stupid\n";

END { print RESET; }

如果由于未运行END块(例如由于崩溃)而导致终端混乱,请从reset包中运行ncurses-utils命令。

不幸的是,Term::ANSIColor不支持任意颜色,因为API停留在最近的千年中。您需要说出原始的ANSI代码。

for my $c (split //, 'Sunshine, lollipops and rainbows') {
    printf "\x1b[38;2;%d;%d;%dm", rand 256, rand 256, rand 256; # fg
    printf "\x1b[48;2;%d;%d;%dm", rand 256, rand 256, rand 256; # bg
    print $c;
}
END { print "\x1b[0m"; } # reset