perl的格式化(Format)报表输出
perl有最好的文本数据处理能力.这是大家都知道的.在perl本身有一个别的软件没有的小功能,就是Perl格式.它相当于简单的命令行报表和图表输出.这个需要先声明格式.创建格式的文件句柄.然后由@,^,<,>,|这样的字符构成所谓的”报表”来输出图表.这样可以指定出行的外观.后面接数据项,最后用write来显示格式化的内容. 样例: 第一部分,声明.如上.如果省略 NAME,上面的代码将定义格式输出 STDOUT. 格式行(图形行)语法: <,|???? 字段的长度通过在格式符号 @,^ 后跟随特定长度的 <,| 来定义,同时<,| 还分别表示,左对齐,右对齐,居中对齐.如果变量超出定义的长度,那么它将被截断. ^?????????? 字段,用来进行多行文本块填充.
$text="aaa bbb ccc ";
formatSTDOUT =
first: ^<<<<
$text
second: ^<<<<
$text
third: ^<<<<
$text
.
write
这样它会输出如下 first: aaa 它默认会对字符串$text进行分解,象split.当然,是以$:存的内容做分割符. 参数行(数据行) 格式变量 注:这些变量以文件句柄为基础设定,因此你需要 select 与特定格式关联的文件句柄来影响这些格式变量 调用输出 多页报表 在使用输出时,最好建一个表的顶部输出.这样看起来会好看很多. 实例:
#!/usr/bin/perl usestrict; 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/sshd
vde2-net x 116 128 /var/run/vde2
mysql x 117 129 MySQL /var/lib/mysql
oracle x 1001 1001 /usr/lib/oracle/xe
tomcat6 x 118 130 /usr/share/tomcat6
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |