如何在Perl中使用格式?

为了在Perl脚本中调用格式声明,我们将使用write关键字-

write EMPLOYEE;

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

select(STDOUT);

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

$~ = "EMPLOYEE";

现在执行a时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
===================================