perl格式化报表输出
1.字段标志符号
@---表示字段的起始
@*---多行字段
^---用于填充字段
2.字段显示符号
<---左对齐
>---右对齐
|---居中
#---数字
.---小数点位置
默认的文件句柄是STDOUT.
3.创建模版
格式模版结构如下:
format FILEHANDLE=
picture line(定义形象行)
value line(格式化输出文本)
.(结束)
write;(调用格式模版)
4.定义页眉格式
会在每一页的顶部打印出来,页面的默认长度为60行。改变$=的值就可以修改页面长度。
例如:
[codesyntax]
format STDOUT_TOP=
数据迁移校验明细-@||
$%
====================
+---------------------+-----------+-----------------------+---------+--------+
| From_table_name | From_rows | To_table_name | To_rows | Result |
+---------------------+-----------+-----------------------+---------+--------+
.
[/codesyntax]
注释:$%perl特殊变量,含有当前的页码。
5.定义文档格式
例如:
[codesyntax]
format STDOUT=
|@<<<<<<<<<<<<<<<<<<<<| @<<<<<<<<<| @<<<<<<<<<<<<<<<<<<<<<| @<<<<<<<| @<<<<<<|
$f_table, $f_num,$t_table, $t_num, $result
+---------------------+-----------+-----------------------+---------+--------+
.
[/codesyntax]
注释:@<定义字符长度和对齐格式,@也代表一个字符。
[codesyntax]
#!/usr/bin/perl
###################################
### author: www.94ip.com ###
### QQ:33790985 ###
### E-mail:wangyun@94ip.com ###
###################################
use DBI;
&check_94ip_user;
sub init{
my $driver="DBI:mysql";
my ($dbname,$host,$user,$password)=@_;
return $dbh=DBI->connect("$driver:$dbname:$host;user=$user;password=$password",{PrintError => 0, RaiseError => 1}) or die "Can't connect";
}
sub check_94ip_user{
for (0..99) {
local $f_table="94ip_user_$_";
my $fsql="select sql_no_cache count(uid) from 94ip_user_$_";
&init('www_94ip_com','localhost','root','www.94ip.com');
local $f_num=$dbh->selectrow_array($fsql);
$dbh->disconnect();
my $sufix=sprintf "%02d",$_;
local $t_table="94ip_user_$sufix";
my $tsql="select sql_no_cache count(uid) from 94ip_user_$sufix";
&init('www_94ip_com','localhost','root','www.94ip.com');
local $t_num=$dbh->selectrow_array($tsql);
local $result=(($f_num == $t_num) ? 'OK' : 'ERROR');
write ;
}
}
$from="www.94ip.com";
$~=SUMMARY; //切换到另一个格式
write;
format STDOUT_TOP=
- @|| -
$%
=========================
+---------------------+-----------+-----------------------+---------+--------+
| From_table_name | From_rows | To_table_name | To_rows | Result |
+---------------------+-----------+-----------------------+---------+--------+
.
format STDOUT=
|@<<<<<<<<<<<<<<<<<<<<| @<<<<<<<<<| @<<<<<<<<<<<<<<<<<<<<<| @<<<<<<<| @<<<<<<|
$f_table, $f_num,$t_table, $t_num, $result
+---------------------+-----------+-----------------------+---------+--------+
.
format SUMMARY=
| FROM: @<<<<<<<<<<<<<|
$from,
+============================================================================+
.
[/codesyntax]
转载请注明:IT运维空间 » Perl » perl格式化报表输出
发表评论