当前位置: 首页 > 文档资料 > Perl 入门教程 >

format

优质
小牛编辑
129浏览
2023-12-01

如前所述,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部分。