• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    perl的格式化(Format)报表输出实现代码

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

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

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

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

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

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

    复制代码 代码如下:

    $text = "aaa bbb ccc ";
    format STDOUT =
    first: ^
        $text
    second: ^
        $text
    third: ^
        $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/perl
    use strict;
    use warnings;

    my ($name,$login,$office,$uid,$gid, $home);
    open FD,"/etc/passwd" or die "$?";
    while(FD>){
      ($name,$login,$office,$uid,$gid, $home) = split (":",$_);
        $^ = 'STDOUT_TOP';
        $~ = 'STDOUT';
        $= = 39;
        write;
    }

    format STDOUT_TOP =
    @>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    "Page $%"
                               Passwd File
      Name                Login    Office   Uid   Gid Home
    ------------------------------------------------------------------
    .

    format STDOUT =
    @ @||||||| @@>>>> @>>>> @
    $name,               $login,  $office,$uid,$gid, $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

    您可能感兴趣的文章:
    • asp.net DataFormatString格式化GridView
    • php Smarty date_format [格式化时间日期]
    • jquery EasyUI的formatter格式化函数代码
    • 如何在UpdatePanel中调用JS客户端脚本
    • s:set 和 s:date 使用, 在jsp判断日期
    • js Date概念详细介绍
    • JS中Date日期函数中的参数使用介绍
    • JS之Date对象和获取系统当前时间详解
    • js字符串日期yyyy-MM-dd转化为date示例代码
    • js用Date对象的setDate()函数对日期进行加减操作
    • JS日期格式化之javascript Date format
    上一篇:python批量下载壁纸的实现代码
    下一篇:用Perl操作Excel文档的实例代码
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    perl的格式化(Format)报表输出实现代码 perl,的,格式化,Format,报表,