如前所述Perl代表着实际提取和报告语言,我们将讨论如何使用Perl来编写报告。
Perl使用写作模板,所谓的“格式”输出报告。要使用格式的Perl特性,你必须:
以下是语法来定义一个Perl的格式
format FormatName = fieldline value_one, value_two, value_three fieldline value_one, value_two .
FormatName表示的格式的名称。Fieldline是应该被格式化的具体数据。线条表示值,将被输入到的磁力线,与一个句点结束的格式。
Fieldline可以包含任何文本或fieldholders。Fieldholders保持空间的数据将置于在稍后的日期。fieldholder有一个格式:
@<<<<
fieldholder是左对齐,用5空格空间。知道有多少在该字段的空格,您必须自行计算@符号和<的大小。其它字段中持有包括:
@>>>> right-justified @|||| centered @####.## numeric field holder @* multiline field holder
一个例子的格式是:
format EMPLOYEE = =================================== @<<<<<<<<<<<<<<<<<<<<<< @<< $name $age @#####.## $salary =================================== .
在这个例子中$的名字将被写为左对齐在22个字符的空格和年龄后,在两个空格空间将被写入。
为了调用此格式的声明,我们将使用写关键字:
write EMPLOYEE; #send to the output
问题是,格式的名称通常是一个打开的文件句柄的名字,并写语句将输出发送到这个文件句柄。我们要发送的数据到stdout,我们必须联合起来,并在输出文件句柄的EMPLOYEE。首先,我们必须确保,STDOUT是我们的选择的文件句柄,使用select()函数。
select(STDOUT);
然后,我们将通过设置新的格式名称STDOUT与STDOUT关联EMPLOYEE,使用特殊的变量$〜。
$~ = "EMPLOYEE";
我们现在做的一个write()时,数据将发送给STDOUT。请记住:如果你没有STDOUT设置为默认的文件句柄,你可以恢复到原来的文件句柄分配的返回值,选择一个标量值,使用选择这个标量变量的特殊变量后,被指定的格式命名,名称相关联STDOUT。
上面的例子会产生一个报告按以下格式:
Kirsten 12 Mohammad 35 Suhi 15 Namrat 10
一切都看起来很好。但是,如果你想在报告中添加一个头。这头将被打印在每个页面的顶部。它也非常简单的做到这一点。除了自定义一个模板,你必须定义一个报头,它具有相同的名称,但附加_TOP关键字如下:
format EMPLOYEE_TOP =
------------------------
Name Age
------------------------
.
# by www.gitbook.net
现在,您的报告将看起来像:
------------------------ Name Age ------------------------ Kirsten 12 Mohammad 35 Suhi 15 Namrat 10
如果您的报告采用超过一页怎么办?你有一个解决方案。使用$%报头如下
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 @<
$%
. #by www.gitbook.net
这会给你下面的结果:
------------------------ Name Age Page 1 ------------------------ Kirsten 12 Mohammad 35 Suhi 15 Namrat 10 End of Page 1
对于一个完整的一套相关的格式化的变量,请参考 Perl特殊变量部分。