无涯教程-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 - redo函数

    此函数将重新启动当前循环,而不会强制判断控制语句。块中不再执行任何语句。如果存在继续块,将不会执行。如果指定了LABEL,则在LABEL标识的循环开始时重新开始执行。 以下是此函数的简单语法- 此函数不返回任何值。 以下是显示其基本用法的示例代码- 执行上述代码后,将

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

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

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

    此函数定义一个新的子例程。上面显示的参数遵循以下规则- NAME是子例程的名称。可以在有或没有原型规范的情况下预先声明命名的子例程(没有关联的代码块)。 匿名子例程必须具有定义。 PROTO定义了函数的原型,调用该函数以验证提供的参数时将使用该原型。 ATTRS为解析器定

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

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

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

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

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

    此功能告诉系统您不再期望使用getservent从服务文件中读取条目。 以下是此函数的简单语法- 此函数不返回任何值。 以下是显示其基本用法的示例代码- Perl 中的 endservent函数 - 无涯教程网 无涯教程网提供描述此功能告诉系统您不再期望使用getservent从服务文件中读取条目。 语

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

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

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

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

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

    此函数未定义EXPR的值。用于标量,列表,哈希,函数或类型范围。在带有诸如undef $hash {$key}之类的语句的哈希上使用;实际上将指定键的值设置为未定义的值。 如果要从哈希中删除元素,请使用delete函数。 以下是此函数的简单语法- 此函数返回undef。 以下是显示其基本用法的示例

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

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

    2024年02月12日
    浏览(44)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包