对于在Macintosh终端会话中运行的PERL程序,如何为控制台中的INPUT文本着色?

时间:2014-02-22 04:15:56

标签: perl colors

不知道该怎么做,但是我去了一个程序,每次运行时我必须输入两个数据点,并且很难在控制台中找到它们 - 眯眼等等。有没有办法着色INPUT,所以当我重复循环程序(把这些元组放入等等)时,我可以跟踪上次程序运行的位置。我希望它的颜色是石灰绿的倒置颜色 - 我现在处于“反转颜色”模式。


我想要实现的是在我输入输入时着色的着色 - 你知道,输入流着色等等。


print "Enter where you'd like me to begin: ";
my $begin = <STDIN>;
chomp $begin;
exit 0 if ($begin eq "");
print "\n";
print "Enter where you'd like me to end: ";
my $end = <STDIN>;
chomp $end;
exit 0 if ($end eq "");
print "\n";

1 个答案:

答案 0 :(得分:1)

Perl程序在您键入时回显STDIN。由于您只想对输入的内容进行着色,因此您必须捕获它然后用颜色打印它。我修改了你的程序来展示如何做到这一点。

#!/bin/perl
use strict;
use warnings;
use Term::ANSIColor;
use Term::ReadKey;

ReadMode('noecho'); # don't echo

print "Enter where you want me to begin: ";
my $begin = <STDIN>;
chomp $begin;
exit 0 if ($begin eq "");
print colored("$begin\n", 'red');
print "Enter where you'd like me to end: ";
my $end = <STDIN>;
chomp $end;
exit 0 if ($end eq "");
print colored("$end\n", 'red');

ReadMode(0);        # back to normal

示例输出:

  

输入您希望我开始的地方:1
  输入您希望我结束的地方:2

(1和2为红色)

红色是绿色的倒数,所以我选择它是因为你在控制台上以反色模式运行。你也可以尝试使用bright_red,如果它不够接近你想要的柠檬绿。

以下是Term::ANSIColorTerm::ReadKey

的文档