Perl 中的 format函数

首页 / Perl入门教程 / Perl 中的 format函数

如前所述,Perl代表实用提取和报告语言,我们现在将讨论使用Perl编写报告。

Perl使用称为"格式"的书写模板来输出报告。要使用Perl的格式功能,您必须-

  • 定义格式
  • Pass the data that will be displayed on the format
  • Invoke the Format

定义格式

以下是定义Perl格式的语法

format FormatName =
   fieldline
   value_one, value_two, value_three
   fieldline
   value_one, value_two
   .

FormatName 表示格式的名称。字段线是应格式化数据的特定方式。值行表示将输入到字段行中的值。您用一个句点结束格式。

fieldline 可以包含任何文本或字段持有人。字段持有人保留了以后将放置在此处的数据的空间。字段持有人的格式为-

@<<<<

This fieldholder is left-justified, with a field space of 5. You must count the @sign and the < signs to know the number of spaces in the field. Other field holders include

@>>>> 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的返回值分配给标量值,然后在特殊变量为分配格式名称,以便与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

Defining a Pagination & Number of Lines on a Page

如果您的报告占用一页以上,该怎么办?您有解决方案。使用 $%变量和标题,如下所示

   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 @<
               $%
   .

这将为您带来以下输出

链接:https://www.learnfk.comhttps://www.learnfk.com/perl/perl-format.html

来源:LearnFk无涯教程网

   ------------------------
   Name                 Age   Page 1
   ------------------------    
   Kirsten              12
   Mohammad             35
   Suhi                 15
   Namrat               10
   End of Page 1

有关与格式相关的完整变量集,请参阅Perl特殊变量部分。

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

如何做好一场技术演讲 -〔极客时间〕

Vue开发实战 -〔唐金州〕

Elasticsearch核心技术与实战 -〔阮一鸣〕

高并发系统设计40问 -〔唐扬〕

设计模式之美 -〔王争〕

代码之丑 -〔郑晔〕

程序员的个人财富课 -〔王喆〕

AI绘画核心技术与实战 -〔南柯〕

结构思考力 · 透过结构看表达 -〔李忠秋〕

好记忆不如烂笔头。留下您的足迹吧 :)