format
如前所述,Perl代表实用提取和报告语言,现在我们将讨论使用Perl编写报告。
Perl使用称为“格式”的书写模板来输出报告。 要使用Perl的格式功能,您必须 -
- 定义格式
- 传递将在格式上显示的数据
- 调用格式
定义格式
以下是定义Perl格式的语法
format FormatName =
fieldline
value_one, value_two, value_three
fieldline
value_one, value_two
.
FormatName
表示格式的名称。 fieldline是数据格式化的具体方式。 值行表示将输入到字段行中的值。 您可以使用单个句点结束格式。
fieldline
可以包含任何文本或字段。 现场持有人为将在以后放置的数据保留空间。 一名持场人的格式为 -
@<<<<
此字段持有者是左对齐的,字段空间为5.您必须计算@符号和 其他现场持有人包括
@>>>> right-justified
@|||| centered
@####.## numeric field holder
@* multiline field holder
一个示例格式是 -
format EMPLOYEE =
===================================
@<<<<<<<<<<<<<<<<<<<<<< @<<
$name $age
@#####.##
$salary
===================================
.
在此示例中,$ name将在22个字符空间内写为左对齐,并且在该年龄之后将写入两个空格。
调用格式以写入数据
为了调用这个格式声明,我们将使用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和标题如下
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 Special Variables部分。