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中的格式


Perl 教程
Perl 教程Perl 安装配置第一个 Perl 程序Perl 语法Perl 中的数据类型Perl 变量Perl 局部和全局变量Perl 中的标量Perl use strict和use warningsPerl 列表和数组Perl 中的哈希Perl 运算符Perl 中的条件语句Perl 中的if语句Perl 中的if-else语句perl 中的if-elsif-else语句Perl 中的unless语句Perl 中的unless-else语句Perl 中的 Switch CasePerl 中的 given-when-default 语句Perl 中的循环和循环控制语句Perl 中的 for 循环Perl while 循环Perl do-while 循环Perl foreach 循环Perl 中的until循环Perl 中的子程序Perl 字符串Perl 字符串转义序列Perl BarewordsPerl 比较文件的内容Perl 根据行号显示文件内容Perl 加密和解密Perl 错误处理Perl 格式Perl 函数签名Perl Hello World程序Perl 简介编写Perl代码的模式使用Perl的数字猜测游戏Perl 面向对象的编程(OOPs)Perl 包Perl abs()函数Perl 使用文件全局访问一个目录Perl Regex中的锚点Perl 向文件追加内容Perl 数组 pop() 函数Perl 数组切片Perl 数组 (push、pop、shift、unshift)Perl 数组Perl Regex中的断言Perl atan2() 函数Perl 自动加载(AUTOLOAD)功能Perl 字符串到数字的自动转换或铸造Perl 引用中的自生现象Perl 正则表达式中的回溯操作Perl Perl程序的基本语法Perl 布尔值Perl 调试器的中断点Perl CGI编程Perl chomp()函数Perl chop()函数Perl chr()函数Perl OOP中的类Perl cmp 操作符Perl 比较标量Perl 构造函数和析构函数Perl cos()函数Perl 计算文本中单词的频率Perl 创建Excel文件Perl 数据类型Perl 日期和时间Perl DBI(数据库独立接口)模块集Perl 分支 (if, if-else, Nested-if, if-elsif ladder, unless, unless-else, unless-elsif)Perl defined()函数Perl delete()函数Perl 带有CRUD操作的目录Perl 用调试器显示变量值Perl each() 函数Perl 正则表达式中的'e'修改器Perl 正则表达式中的'ee'修改器Perl OOPs中的封装Perl eq运算符Perl exists() 函数Perl 从脚本中退出Perl exp函数Perl 使用Regex从一个字符串中提取IP地址Perl 文件处理简介Perl 文件输入输出功能Perl 文件锁定Perl 文件测试运算符Perl CGI中的文件上传Perl 查找文件和目录Perl ge运算符Perl CGI中的GET与POSTPerl getc函数Perl 获取一个数组的元素数Perl given-when 语句Perl glob()函数Perl goto 语句Perl grep()函数Perl Regex中的分组和交替法Perl gt运算符Perl 标量和列表背景下的哈希值Perl 哈希操作Perl HashPerl 哈希值Perl hex函数Perl 实现一个队列Perl 实现一个堆栈Perl index() 函数Perl OOPs中的继承性Perl 在Windows、Linux和MacOS中的安装和环境设置Perl int()函数Perl join()函数Perl keys() 函数Perl 循环中的lastPerl lc()函数用于小写转换Perl lcfirst()函数Perl le运算符Perl length()函数Perl 调试器中的行操作命令Perl 列表及其类型Perl 列表的上下文敏感度Perl 列表函数Perl log() 函数Perl 循环 for, foreach, while, do...while, until, 嵌套循环Perl lt运算符Perl 匹配运算符
Perl 基础教程
Perl 简介Perl 环境安装Perl 基础语法Perl 数据类型Perl 变量Perl 标量Perl 数组Perl 哈希Perl 条件语句Perl 循环Perl 运算符Perl 时间日期Perl 子程序(函数)Perl 引用Perl 格式化输出Perl 文件操作Perl 目录操作Perl 错误处理Perl 特殊变量Perl 正则表达式Perl Socket 编程Perl 面向对象Perl 包和模块Perl 进程管理Perl POD 文档Perl while 循环Perl until 循环Perl for 循环Perl foreach 循环Perl do…while 循环Perl 循环嵌套Perl next 语句Perl last 语句Perl continue 语句Perl redo 语句Perl goto 语句Perl IF 语句Perl IF…ELSE 语句Perl IF…ELSIF 语句Perl UNLESS 语句Perl UNLESS…ELSE 语句Perl UNLESS…ELSIF 语句Perl switch 语句
Perl 问答
Perl 和 Ruby 的区别