perl的格式化(Format)报表输出

perl的格式化(Format)报表输出,第1张

概述perl有最好的文本数据处理能力.这是大家都知道的.在perl本身有一个别的软件没有的小功能,就是Perl格式.它相当于简单的命令行报表和图表输出.这个需要先声明格式.创建格式的文件句柄.然后由@,^,<,>,|这样的字符构成所谓的”报表”来输出图表.这样可以指定出行的外观.后面接数据项,最后用write来显示格式化的内容. 样例: 输出纪录格式输出象下边一样定义: format NAME = F

perl有最好的文本数据处理能力.这是大家都知道的.在perl本身有一个别的软件没有的小功能,就是Perl格式.它相当于简单的命令行报表和图表输出.这个需要先声明格式.创建格式的文件句柄.然后由@,^,<,>,|这样的字符构成所谓的”报表”来输出图表.这样可以指定出行的外观.后面接数据项,最后用write来显示格式化的内容.

样例:
输出纪录格式输出象下边一样定义:
format name =
FORMList
.

第一部分,声明.如上.如果省略 name,上面的代码将定义格式输出 STDOUT.
第二部分,格式行FORMList 由一些有序的行组成,每一行都是下面三种类型中的一种:
1. 注释,以第一列为 # 来表示.
2. 一个格式行,用来定义一个输出行的格式,就是指上面讲的@,|这样的字符
3. 参数行,数据行,用来向前面的格式行中插入值,都是perl的变量
第三部分,结束 “.”来表示.

格式行(图形行)语法:
格式行中每个被替换的部分分别以 @ 或者 ^ 开头.这些行不作任何形式的变量代换.
@          字段(不要同数组符号 @ 相混淆)是普通的字段.

<,|     字段的长度通过在格式符号 @,^ 后跟随特定长度的 <,| 来定义,同时<,| 还分别表示,左对齐,右对齐,居中对齐.如果变量超出定义的长度,那么它将被截断.

^           字段,用来进行多行文本块填充.

$text="aaa bbb ccc ";formatSTDOUT =first: ^<<<<    $textsecond: ^<<<<    $textthird: ^<<<<    $text  .write

这样它会输出如下

first: aaa
second: bbb
third: ccc

它默认会对字符串$text进行分解,象split.当然,是以$:存的内容做分割符.
#(在 @ 或 ^ 后边)  右对齐的另外一种方式,在这些符号后面指定一个数字字段。你可以在这种区域中插入一个。来制定小数点的位置。如果这些区域的值包含一个换行符,那么只输出换行符前面的文本.如@.##就是输出二位小数.
@*        可以被用来打印多行不截断的值,也就是多行没有格式化的输出.

参数行(数据行)
参数行指定参数的顺序必须跟相应的格式行的字段顺序一致.不同参数的表达式需要使用逗号分隔.
参数的数据可以是标量数据,也可以是函数的返回值.
参数行被处理之前所有的参数表达式都在列表环境中求值,因此单个列表表达式会产生多个列表元素.
通过使用圆括弧将表达式括起来,可以使表达式扩展到多行 (因此,圆括弧必须是第一行的第一个标志).这样就可以将值同相应的格式域对应起来方便阅读.
表达式中,空白字符 \n,\t,和 \f 总是被解释成单个空格

格式变量
$~ 中 ($FORMAT_name)          格式名字
$^ ($FORMAT_top_name)         当前的表头格式名字存储在
$% ($FORMAT_PAGE_NUMBER)      当前输出的页号
$= ($FORMAT_lines_PER_PAGE)   每页中的行数
$| ($FORMAT_autoFLUSH)      是否自动刷新输出缓冲区存储
$^L ($FORMAT_FORMFeed)       在每一页(除了第一页)表头之前需要输出的字符串存储在

注:这些变量以文件句柄为基础设定,因此你需要 select 与特定格式关联的文件句柄来影响这些格式变量

调用输出
write
最后直接用write函数来显示格式化的文本内容.

多页报表
$%  当前输出的页面编号
$=  页中的行数
$-  还有多少剩下的行数

在使用输出时,最好建一个表的顶部输出.这样看起来会好看很多.

实例:

#!/usr/bin/perlusestrict;usewarnings; my($name,$login,$office,$uID,$gID,$home);openFD,"</etc/passwd"ordIE"$?";while(<FD>){  ($name,$home) = split(":",$_);    $^ = 'STDOUT_top';    $~ = 'STDOUT';    $= = 39;    write;} formatSTDOUT_top =@>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"Page $%"                           Passwd file  name                Login    Office   UID   GID Home  ------------------------------------------------------------------. formatSTDOUT =@<<<<<<<<<<<<<<<<<< @||||||| @<<<<<<@>>>> @>>>> @<<<<<<<<<<<<<<<<<$name,$home .


输出如下

                                                             Page 3                           Passwd file  name                Login    Office   UID   GID Home--------------------------------------------------------------------sshd                   x     115    65534       /var/run/sshdvde2-net               x     116      128       /var/run/vde2MysqL                  x     117      129 MysqL /var/lib/MysqLoracle                 x     1001    1001       /usr/lib/oracle/xetomcat6                x     118      130       /usr/share/tomcat6
总结

以上是内存溢出为你收集整理的perl的格式化(Format)报表输出全部内容,希望文章能够帮你解决perl的格式化(Format)报表输出所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1279197.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-09
下一篇 2022-06-09

发表评论

登录后才能评论

评论列表(0条)

保存