我需要找到一种简单的方法来更改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";
}
我只想更改颜色。没什么可说的。
答案 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