kavin

perl格式化报表输出

kavin Perl 2018-05-04 2626浏览 0

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 ###

 

### QQ33790985 ###

 

### E-mailwangyun@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]


继续浏览有关 perl 的文章
发表评论