无涯教程-Perl - 格式化

这篇具有很好参考价值的文章主要介绍了无涯教程-Perl - 格式化。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Perl使用称为“formats”的模板来输出内容。要使用Perl的格式函数,必须先定义一种格式,然后才能使用该格式写入格式化的数据。

定义格式

以下是定义Perl格式的语法-

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

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

@<<<<

该字段保持符是左对齐的,字段空间为5。您必须对@符号和<符号进行计数,才能知道该字段中的空格数。

@>>>> right-justified
@|||| centered
@####.## numeric field holder
@* multiline field holder

一个示例格式是-

format EMPLOYEE =
===================================
@<<<<<<<<<<<<<<<<<<<<<< @<< 
$name $age
@#####.##
$salary
===================================
.

在此示例中,$name将在22个字符的空间中写为左对齐,并且在该年龄之后将在两个空间中写。

使用格式

为了调用此格式声明,我们将使用 write 关键字-

write EMPLOYEE;

问题在于格式名称通常是打开的文件句柄的名称,而write语句会将输出发送到该文件句柄。由于我们希望将数据发送到STDOUT,因此必须将EMPLOYEE与STDOUT文件句柄相关联。但是,首先,我们必须使用select()函数确保STDOUT是我们选择的文件句柄。

select(STDOUT);

然后,通过使用特殊变量$〜或$FORMAT_NAME来设置STDOUT的新格式名称,将EMPLOYEE与STDOUT关联起来,如下所示-

$~="EMPLOYEE";

现在,当我们执行write时,数据将被发送到STDOUT。记住:如果要用其他文件句柄而不是STDOUT,则可以使用select()函数选择该文件句柄,其余逻辑将保持不变。

让我们来看下面的示例。

#!/usr/bin/perl

format EMPLOYEE =
===================================
@<<<<<<<<<<<<<<<<<<<<<< @<< 
$name $age
@#####.##
$salary
===================================
.

select(STDOUT);
$~=EMPLOYEE;

@n=("Ali", "Raza", "Jaffer");
@a =(20,30, 40);
@s=(2000.00, 2500.00, 4000.000);

$i=0;
foreach (@n) {
   $name=$_;
   $age=$a[$i];
   $salary=$s[$i++];
   write;
}

执行后,将产生以下输出-

===================================
Ali                     20
  2000.00
===================================
===================================
Raza                    30
  2500.00
===================================
===================================
Jaffer                  40
  4000.00
===================================

定义报头

一切看起来都很好。但是您可能会对在报表中添加标题感兴趣。此标题将打印在每页顶部。这很简单。除了定义模板之外,您还必须定义标题并将其分配给$^或$FORMAT_TOP_NAME变量-

#!/usr/bin/perl

format EMPLOYEE =
===================================
@<<<<<<<<<<<<<<<<<<<<<< @<< 
$name $age
@#####.##
$salary
===================================
.

format EMPLOYEE_TOP =
===================================
Name                    Age
===================================
.

select(STDOUT);
$~=EMPLOYEE;
$^=EMPLOYEE_TOP;

@n=("Ali", "Raza", "Jaffer");
@a =(20,30, 40);
@s=(2000.00, 2500.00, 4000.000);

$i=0;
foreach (@n) {
   $name=$_;
   $age=$a[$i];
   $salary=$s[$i++];
   write;
}

现在您的报告看起来像-

===================================
Name                    Age
===================================
===================================
Ali                     20
  2000.00
===================================
===================================
Raza                    30
  2500.00
===================================
===================================
Jaffer                  40
  4000.00
===================================

定义分页

如果您的报告占用一页以上,该怎么办?您有一个解决方案,只需使用或$FORMAT PAGE NUMBER变量以及标头,如下所示:

format EMPLOYEE_TOP =
===================================
Name                    Age Page @<
                                 $%
===================================                               
.

现在您的输出将如下所示:

===================================
Name                    Age Page 1
===================================
===================================
Ali                     20
  2000.00
===================================
===================================
Raza                    30
  2500.00
===================================
===================================
Jaffer                  40
  4000.00
===================================

页面行数

您可以使用特殊变量 $= (或$FORMAT_LINES_PER_PAGE)设置每页的行数,默认情况下$=将为60。

定义页脚

虽然$^或$FORMAT_TOP_NAME包含当前页眉格式的名称,但是没有相应的机制可以自动为页脚执行相同的操作。如果您有固定大小的页脚,则可以通过在每个write之前检查变量$-或$FORMAT_LINES_LEFT来获取页脚,并在必要时使用定义如下的另一种格式自己打印页脚-

format EMPLOYEE_BOTTOM =
End of Page @<
            $%
.

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

Perl - 格式化 - 无涯教程网无涯教程网提供Perl使用称为formats 的模板来输出内容。要使用Perl的格式函数,必须先定义一种格式,...https://www.learnfk.com/perl/perl-formats.html文章来源地址https://www.toymoban.com/news/detail-640823.html

到了这里,关于无涯教程-Perl - 格式化的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 无涯教程-Perl - use函数

    此函数将MODULE导出的所有功能(或仅LIST引用的功能)导入当前包的名称空间。有效等效于- 也用于在当前脚本上强加编译器指令(编译指示),尽管从本质上讲它们只是模块。 请注意,use语句在编译时进行判断。在执行时判断require语句。 如果VERSION参数存在于Module和LIST之间,则使用将

    2024年02月12日
    浏览(32)
  • 无涯教程-Perl - chdir函数

    此功能将当前工作目录更改为EXPR,如果未指定,则更改为用户的主目录。此函数调用等效于Unix命令 cd EXPR 。 以下是此函数的简单语法- 如果失败,此函数返回0,如果成功,则返回1。 以下是显示其基本用法的示例代码,假设您在/user/home/learnfk目录中工作- Perl 中的 chdir函数 - 无涯教程

    2024年02月14日
    浏览(34)
  • 无涯教程-Perl - sethostent函数

    该函数应在首次调用gethostent之前调用。 STAYOPEN参数是可选的,在大多数系统上未使用。 当gethostent()检索主机数据库中下一行的信息时,然后sethostent设置(或重置)枚举到主机条目集的开头。 以下是此函数的简单语法- 此函数不返回任何值。 以下是显示其基本用法的示例代码- 执行

    2024年02月12日
    浏览(38)
  • 无涯教程-Perl - endhostent函数

    此函数告诉系统您不再希望使用gethostent从hosts文件读取条目。 以下是此函数的简单语法- 此函数不返回任何值。 以下是显示其基本用法的示例代码- 执行上述代码后,将产生以下输出- Perl 中的 endhostent函数 - 无涯教程网 无涯教程网提供描述此函数告诉系统您不再希望使用geth

    2024年02月13日
    浏览(35)
  • 无涯教程-Perl - sprintf函数

    此函数使用FORMAT基于LIST中的值返回格式化的字符串。本质上与printf相同,但是返回格式化的字符串而不是将其打印。 以下是此函数的简单语法- 此函数返回SCALAR(格式化的文本字符串)。 以下是显示其基本用法的示例代码- 执行上述代码后,将产生以下输出- Perl 中的 sprintf函数

    2024年02月12日
    浏览(38)
  • 无涯教程-Perl - exit函数

    该函数判断EXPR,退出Perl解释器,并返回该值作为退出值。始终在退出之前运行脚本(和导入的程序包)中定义的所有END {}块。如果省略EXPR,则解释器以0值退出。不应用于退出子例程;否则,解释器将退出子例程。使用eval而死或使用return。 以下是此函数的简单语法- 此函数不返回任

    2024年02月13日
    浏览(39)
  • 无涯教程-Perl - unshift函数

    此函数按顺序将LIST中的元素放在ARRAY的开头。这与shift()相反。 以下是此函数的简单语法- 此函数返回ARRAY中新元素的数量。 以下是显示其基本用法的示例代码- 执行上述代码后,将产生以下输出- Perl 中的 unshift函数 - 无涯教程网 无涯教程网提供描述此函数按顺序将LIST中的元素

    2024年02月12日
    浏览(54)
  • 无涯教程-Perl - splice函数

    此函数从LENGTH元素的OFFSET元素中删除ARRAY元素,如果指定,则用LIST替换删除的元素。如果省略LENGTH,则从OFFSET开始删除所有内容。 以下是此函数的简单语法- 该函数返回- 在标量context中,如果没有删除任何元素,则为undef 在标量context中删除了最后一个元素 在列表context中,失败时为空

    2024年02月12日
    浏览(48)
  • 无涯教程-Perl - grep函数

    此函数从LIST中提取EXPR为TRUE的所有元素。 以下是此函数的简单语法- 此函数返回在标量context中表达式返回true的次数以及在列表context中与表达式匹配的元素列表。 以下是显示其基本用法的示例代码- 执行上述代码后,将产生以下输出- Perl 中的 grep函数 - 无涯教程网 无涯教程网

    2024年02月13日
    浏览(33)
  • 无涯教程-Perl - time函数

    此函数返回自纪元以来的秒数(对于大多数系统,是1970年1月1日UTC,00:00:00;对于Mac OS,是1904年1月1日,00:00:00)。适用于gmtime和本地时间。 以下是此函数的简单语法- 此函数返回自纪元后数秒的整数。 以下是显示其基本用法的示例代码- 执行上述代码后,将产生以下输出- Perl 中的 ti

    2024年02月11日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包