Perl 格式

Perl 格式

格式是Perl中用来输出报告的写作模板。Perl有一种机制可以帮助生成简单的报告和图表。Formats不是被执行的,而是被声明的,所以它们可以在程序的任何地方出现。格式有自己的命名空间,与Perl中的其他类型不同,例如,名为 “tron “的函数与名为 “tron “的格式是不同的。然而,程序中的文件柄的名称是与该文件柄相关的格式的默认名称。

定义一个格式

定义一个Perl格式的语法。

format FormatName =
fieldline
value_1, value_2, value_3
fieldline
value_1, value_2, value_3
.

- 格式的名称由 FormatName 表示 。

- 字段行 是用来格式化数据的一种特殊方式。

- 值行 表示/描述将被输入到 字段行中 的值 。

- 格式以 一个句号() 结束。

- 字段行为 以后输入的数据提供了空间。

字段 持有人的语法

@<<<<<<<       left-justified (with 7 field spaces by counting '@' and '<')
@|||||||       center-justified
@###.####      numeric fieldholder
@*             multiline fieldholder

使用一个格式

Write 关键字是用来调用格式声明的。

Write FormatName;

格式名称是一个打开的文件句柄的名称,写语句将输出发送到同一个文件句柄。为了将数据发送到 STDOUT ,格式名称需要与STDOUT文件句柄相关联。

注意: 使用 select() 函数来确保STDOUT是被选中的文件句柄。

select (STDOUT);

为了将格式名称与STDOUT联系起来,通过设置新的格式名称与STDOUT,使用 $~$Format_Name 这样的变量。

$~ = "Format_Name";

注意: 如果要在STDOUT以外的任何其他文件柄中写报告,请使用 select() 函数选择该文件柄。

例如:

输入:使用STDOUT

#!/usr/bin/perl
print "Content-type: text/html\n\n";
   
@First_Name = qw(Karthik Raman Shivam Tarun);
@Last_Name = qw(Singh Biswas Anand Mishra);
@ID = qw(101 186 009 359);
@Phone_Number = qw(963x 885x 734x 921x);
   
format DATA = 
@<<<<<<<<<<<<<<<@<<<<<<<<<<<<<<<@<<<<<<<<<<<<<<<@<<<<<<<<<<<<<<<
First_Name[k] Last_Name[k]  ID[k]         Phone_Number[k]
   
.
   
select(STDOUT);
~ = DATA;k = 0;
while (k <=#First_Name)
{
    write;
    $k++;
}

输出 :

Perl中的格式

输入:使用其他文件手柄(将输出打印成文本文件)

#!/usr/bin/perl
  
print "Content-type: text/html\n\n";
  
  
@First_Name = qw(Karthik Raman Shivam Tarun);
@Last_Name = qw(Singh Biswas Anand Mishra);
@ID = qw(101 186 009 359);
@Phone_Number = qw(963x 885x 734x 921x);
  
  
format DATA = 
@<<<<<<<<<<<<<<<@<<<<<<<<<<<<<<<@<<<<<<<<<<<<<<<@<<<<<<<<<<<<<<
First_Name[k] Last_Name[k]  ID[k]         Phone_Number[k]
  
.
  
open(FILE, ">file.txt");
select FILE;
~ = DATA;
  k = 0;
while (k <=#First_Name)
{
    write;
    $k++;
}
  
close FILE;

输出 :

Perl中的格式

打印数据的文件:

Perl中的格式

报告的页眉和页脚

页眉是出现在每页顶部的东西。不需要定义模板,只需定义一个页眉并将其分配给 $^$FORMAT_NAME_TOP .

页脚 有一个固定的尺寸。它可以通过检查变量 $- 来实现 。 如果有必要,你甚至可以使用下面给出的语法,自己打印页脚。

format FORMAT_NAME_BOTTOM
End of Page $%

例如:

输入:使用STDOUT

#!/usr/bin/perl
print "Content-type: text/html\n\n";
   
format DATA_TOP = 
@||||||||||||||||||||||||||||||||||||||||||||||||||||
                  "Staff Members"
               ----------------------
First           Last            ID              Phone
------------------------------------------------------
.
   
@First_Name = qw(Karthik Raman Shivam Tarun);
@Last_Name = qw(Singh Biswas Anand Mishra);
@ID = qw(101 186 009 359);
@Phone_Number = qw(963x 885x 734x 921x);
   
format DATA = 
@<<<<<<<<<<<<<<<@<<<<<<<<<<<<<<<@<<<<<<<<<<<<<<<@<<<<<<<<<<<<<<<
First_Name[k] Last_Name[k]  ID[k]         Phone_Number[k]
   
.
   
select (STDOUT);
~ = DATA;^ = DATA_TOP;
k = 0;
while (k <= #First_Name)
{
    write;
    k++;
}

输出:

Perl中的格式

输入:获得输出到一个文本文件

#!/usr/bin/perl
print "Content-type: text/html\n\n";
  
format DATA_TOP = 
@||||||||||||||||||||||||||||||||||||||||||||||||||||
                  "Staff Members"
               ----------------------
First           Last            ID              Phone
------------------------------------------------------
.
  
@First_Name = qw(Karthik Raman Shivam Tarun);
@Last_Name = qw(Singh Biswas Anand Mishra);
@ID = qw(101 186 009 359);
@Phone_Number = qw(963x 885x 734x 921x);
  
  
format DATA = 
@<<<<<<<<<<<<<<<@<<<<<<<<<<<<<<<@<<<<<<<<<<<<<<<@<<<<<<<<<<<<<<
First_Name[k] Last_Name[k]  ID[k]         Phone_Number[k]
  
.
  
open (FILE, ">file.txt");
select FILE;
~ = DATA;^ = DATA_TOP;
  
k = 0;
while (k <= #First_Name)
{
    write;
    k++;
}
close FILE;

输出:

Perl中的格式

打印数据的文件:

Perl中的格式

分页

当你有一个长的报告,不能放在一个页面上时,就需要分页。使用 $%$FORMAT_PAGE_NUMBER 这样的变量以及格式中的标题有助于将页数定义为超过一页。一页的默认行数是60,但也可以通过使用变量 $=$FORMAT_LINES_PER_PAGE 手动设置 。

例子

#!/usr/bin/perl
print "Content-type: text/html\n\n";
  
format DATA_TOP = 
@>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
"[Page %]"
@||||||||||||||||||||||||||||||||||||||||||||||||||||
                  "Staff Members"
               ----------------------
First           Last            ID              Phone
------------------------------------------------------
.
  
@First_Name = qw(Karthik Raman Shivam Tarun);
@Last_Name = qw(Singh Biswas Anand Mishra);
@ID = qw(101 186 009 359);
@Phone_Number = qw(963x 885x 734x 921x);
  
  
format DATA = 
@<<<<<<<<<<<<<<<@<<<<<<<<<<<<<<<@<<<<<<<<<<<<<<<@<<<<<<<<<<<<<<<First_Name[k]Last_Name[k] ID[k]        Phone_Number[k]
  
.
  
select (STDOUT);~ = DATA;
^ = DATA_TOP;= = 1;
  
k = 0;
while (k <= #First_Name)
{
    write;
    k++;
}

输出:

Perl中的格式

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程