打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Perl输出数据为纯文本表格Text::ASCIITable | DiggLife

前些日子利用公司内部项目提供的 RESTful API 封装了一个 CLI 脚本。其中用到不少有趣的 CPAN 模块,Text::ASCIITable 就是其中一个。

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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 );$t->addRow( @$_ ) for (@langs); print $t;

以上Perl代码的输出结果如下图:

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

  1. alignCol

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

  3. setColWidth

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

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

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
EXCEL表格用“&”连字符合并文本时如何保持原单元格的格式?
Excel2013如何导入外部文本数据
office办公转换技巧,一定要会用
Python 读取 Word 的艺术:python-docx 模块的使用和介绍
wps如何将文本转为表格?
perl List::Util模块(转)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服