【03】 linux 终端下高亮输出perl

来源:互联网 发布:随机算法软件 编辑:程序博客网 时间:2024/06/16 05:43

    经常使用linux 的人会发现,有很多命令的输出结果都带有一定的格式,比如说颜色高亮显示,背景颜色等。 那么在编写perl 脚本的时候,是否也能将perl 的输出进行格式化处理呢? 答案是肯定的,而且非常简单。


1.  perl 支持的输出样式:

    1. 测试脚本: test-format

#!/usr/bin/perl#打印颜色必须引入的模块和设置use Term::ANSIColor qw(:constants);$Term::ANSIColor::AUTORESET = 1;print "\n perl 支持的颜色类型  \n";print BOLD  "BOLD\n";print CLEAR "CLEAR\n";print DARK "DARK\n";print UNDERLINE "UNDERLINE\n";print UNDERSCORE "UNDERSCOPRE\n";print BLINK "BLINK\n";print REVERSE "REVERSE\n";print CONCEALED "CONCELED\n";print BLACK "BLACK\n";print RED "RED\n";print GREEN "GREEN\n";print YELLOW "YELLOW\n";print BLUE "BLUE\n";print MAGENTA "MAGENTA\n";print CYAN "CYAN\n";print WHITE "WHITE\n";print ON_BLACK "ON_BLACK\n";print ON_RED "ON_RED\n";print ON_GREEN "ON_GREEN\n";print ON_YELLOW "ON_YELLOW\n";print ON_BLUE "ON_BLUE\n";print ON_MAGENTA "ON_MAGENTA\n";print ON_CYAN "ON_CYAN\n";print ON_WHITE "ON_WHITE\n";

    2. 输出结果:

   


2. perl 格式化字符串中关键字

    1. 测试程序: test-color

#!/usr/bin/perl#打印颜色必须引入的模块和设置use Term::ANSIColor qw(:constants);$Term::ANSIColor::AUTORESET = 1;&print_color("hello,world,hello,java,hello,js\n","java","hell");#desc    输出有颜色的字符串#para1  接收至少两个参数以上,第一个参数为要格式化的字符串,之后的参数为要使用颜色的字符串sub print_color(){  die "print_color 方法需要至少两个参数" if @_ <2;  #获取要格式化颜色的字符串  my $line = shift @_;  #获取要高亮的字符串数组  @patterns = @_;  #获取要高亮显示的字符串数组,拼接正则模式  my $spectors = (shift @_) . '+';  foreach(@_){     $spectors .= "|$_+";  }  #按正则模式进行分组  my @arrays = split(/($spectors)/, $line);  #输出结果  for my $item(@arrays){      #直接使用@patterns 数组反向匹配,数组内插时,每个字符串直接会有空格      if("@patterns" =~ $item){        print BOLD RED $item;      } else {        print $item;      }  }}

    2. 运行结果:

    

1 0
原创粉丝点击