[perl] 输出纯文本表格

Text::ASCIITable 是一个用来将数据以纯文本格式的表格形式输出的 Perl 模块,表格样式简洁明了,而且可以灵活地自定义,非常适合命令行程序。我的这个 CLI 脚本需要将 Hash Ref 输出到终端,简单地使用 print 输出最多只能达到能看的效果,但是使用 Text::ASCIITable 能够做到一目了然。这个模块的接口也非常简单,稍微看看 POD 和 Example 就能上手。

use strict;
use warnings;
use Text::ASCIITable;
 
my @attrs = qw/NAME AUTHOR BIRTH VERSION WEBSITE/;
 
my @langs = 
(
    ['Perl','Larry Wall','1987','5.18.2','http://www.perl.org'],
    ['Python','Guido Van Rossum','1991','2.7.6','http://www.python.org'],
);
 
my $t = Text::ASCIITable -> new({ headingText => 'Program Languages', drawRowLine => 1 });
$t -> setCols( @attrs );
for my $lang ( @langs ) {
    $t -> addRow( @$lang );
}
print $t;

Text::ASCIITable还有很多选项,比如上面这段有用到的 drawRowLine 会在每行数据后打印一条分割线。经常会使用的还会有:

上面的结果中,数字自动向右对齐了,可是我希望版本号被当作字符串处理,向左对其,可以加一句 $t->alighCol('VERSION','left') 。除此之外,表头也能用 alignHeadRow 或者 alignColName 来处理。

有时候一行字符太多,超过了终端宽度,可以用 setColWidth 来限制列宽,还可以使用 drawPage 来分页显示。

  1. alignCol
  2. setColWidth

具体使用方式和选项,代码的POD里有详细描述,基本上能够满足一般使用需求。如果要UTF-8,颜色等更加丰富的功能,可以使用另外一个模块 Text::ANSITable 。

ref: link

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值