- Perl 基础知识
- Perl - 主页
- Perl - 简介
- Perl - 环境
- Perl - 语法概述
- Perl - 数据类型
- Perl - 变量
- Perl - 标量
- Perl - 数组
- Perl - 哈希
- Perl - IF...ELSE
- Perl - 循环
- Perl - 运算符
- Perl - 日期和时间
- Perl - 子例程
- Perl - 参考资料
- Perl - 格式
- Perl - 文件 I/O
- Perl - 目录
- Perl - 错误处理
- Perl - 特殊变量
- Perl - 编码标准
- Perl - 正则表达式
- Perl - 发送电子邮件
- Perl 高级
- Perl - 套接字编程
- Perl - 面向对象
- Perl - 数据库访问
- Perl - CGI 编程
- Perl - 包和模块
- Perl - 流程管理
- Perl - 嵌入式文档
- Perl - 函数参考
- Perl 有用资源
- Perl - 问题与解答
- Perl - 快速指南
- Perl - 有用的资源
- Perl - 讨论
Perl 格式 - 撰写报告
如前所述,Perl 代表实用提取和报告语言,我们现在将讨论使用 Perl 编写报告。
Perl 使用称为“格式”的书写模板来输出报告。要使用 Perl 的格式功能,您必须 -
- 定义格式
- 传递将在格式上显示的数据
- 调用格式
定义格式
以下是定义 Perl 格式的语法
format FormatName = fieldline value_one, value_two, value_three fieldline value_one, value_two .
FormatName
代表格式的名称。字段线是数据格式化的具体方式。值行表示将输入到字段行中的值。您可以用一个句点结束该格式。
fieldline
可以包含任何文本或字段持有者。字段持有者为稍后放置的数据保留空间。字段持有者的格式为 -
@<<<<
该字段持有者左对齐,字段空格为 5。您必须计算 @ 符号和 < 符号才能知道字段中空格的数量。其他领域持有者包括
@>>>> right-justified @|||| centered @####.## numeric field holder @* multiline field holder
一个示例格式是 -
format EMPLOYEE = =================================== @<<<<<<<<<<<<<<<<<<<<<< @<< $name $age @#####.## $salary =================================== .
在此示例中,$name 将在 22 个字符空格内写为左对齐,之后年龄将写在两个空格中。
调用Format写入数据
为了调用此格式声明,我们将使用 write 关键字 -
write EMPLOYEE; #send to the output
问题在于格式名称通常是打开的文件句柄的名称,而 write 语句会将输出发送到该文件句柄。由于我们希望将数据发送到 STDOUT,因此必须将 EMPLOYEE 与 STDOUT 文件句柄关联起来。然而,首先我们必须使用 select() 函数确保 STDOUT 是我们选择的文件句柄
select(STDOUT);
然后,我们通过使用特殊变量 $~ 将新格式名称设置为 STDOUT,将 EMPLOYEE 与 STDOUT 关联起来
$~ = "EMPLOYEE";
当我们现在执行 write() 时,数据将被发送到 STDOUT。请记住:如果您没有将 STDOUT 设置为默认文件句柄,则可以通过将 select 的返回值分配给标量值,并在特殊变量之后使用 select 与此标量变量来恢复到原始文件句柄。指定与 STDOUT 关联的格式名称。
上面的示例将生成以下格式的报告
Kirsten 12 Mohammad 35 Suhi 15 Namrat 10
定义报告标题
一切看起来都很好。但您可能有兴趣在报告中添加标题。该标题将打印在每页的顶部。这样做非常简单。除了定义模板之外,您还必须定义一个具有相同名称但附加 _TOP 关键字的标头,如下所示
format EMPLOYEE_TOP = ------------------------ Name Age ------------------------ .
现在您的报告将如下所示
------------------------ Name Age ------------------------ Kirsten 12 Mohammad 35 Suhi 15 Namrat 10
定义分页和页面上的行数
如果您的报告超过一页怎么办?你有一个解决方案。$%
将vairable 与 header 一起使用,如下所示
format EMPLOYEE_TOP = ------------------------ Name Age Page @< ------------------------ $% .
现在你的输出看起来像
------------------------ Name Age Page 1 ------------------------ Kirsten 12 Mohammad 35 Suhi 15 Namrat 10
您可以使用特殊变量(或 $FORMAT_LINES_PER_PAGE )设置每页的行数,$=
默认 $= 将为 60
定义报表页脚
还剩下最后一件事,那就是页脚。与页眉非常相似,您可以定义页脚,并将其写在每页之后。这里您将使用 _BOTTOM 关键字而不是 _TOP。
format EMPLOYEE_BOTTOM = End of Page @< $% .
这会给你以下结果
------------------------ Name Age Page 1 ------------------------ Kirsten 12 Mohammad 35 Suhi 15 Namrat 10 End of Page 1
有关与格式化相关的完整变量集,请参阅Perl 特殊变量部分。