Formatos en Perl

Los formatos son las plantillas de escritura utilizadas en Perl para generar los informes. Perl tiene un mecanismo que ayuda a generar informes y gráficos simples. En lugar de ejecutarse, se declaran formatos, por lo que pueden aparecer en cualquier punto del programa. Los formatos tienen su propio espacio de nombres aparte de los otros tipos en Perl, es decir, la función llamada «tron» no es lo mismo que el formato llamado «tron». Sin embargo, el nombre del identificador de archivo en el programa es el nombre predeterminado para el formato asociado con ese identificador de archivo.

Definición de un formato

Sintaxis para definir un formato Perl:

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

– El nombre del formato se indica mediante FormatName.
Fieldline es una forma particular utilizada para formatear los datos. Fieldline también puede contener texto o marcadores de campo.
– Las líneas de valor indican/describen los valores que se ingresarán en las líneas de campo.
– El formato finaliza con un solo punto (.)
Los titulares de campo tienen el espacio para los datos que se ingresarán más adelante.

Sintaxis para titulares de campo:

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

Usando un formato

WriteLa palabra clave se utiliza para llamar a la declaración de formato.

Write FormatName;

El nombre del formato es el nombre de un identificador de archivo abierto y la declaración de escritura envía la salida al mismo identificador de archivo. Para enviar los datos a STDOUT , el nombre del formato debe estar asociado con el identificador del archivo STDOUT.
Nota: Use la select()función para asegurarse de que STDOUT sea el identificador de archivo seleccionado.

select (STDOUT);

Para asociar el nombre del formato con STDOUT configurando el nuevo nombre de formato con STDOUT, use variables como $~ o $Format_Name

$~ = "Format_Name";

Nota: Para escribir un informe en cualquier otro identificador de archivo que no sea STDOUT, use la select()función para seleccionar ese identificador de archivo.

Ejemplo:
Entrada: Usando 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++;
}

Producción :

Entrada: uso de otro identificador de archivo (impresión de la salida en un archivo de texto).

#!/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;

Producción :

Archivo donde se imprimen los datos:

Encabezado y pie de página del informe

El encabezado es algo que aparece en la parte superior de cada página. En lugar de definir una plantilla, simplemente defina un encabezado y asígnelo a $^ o $FORMAT_NAME_TOP .
El pie de página tiene un tamaño fijo. Se puede lograr comprobando la variable $- . Incluso puede imprimir el pie de página usted mismo si es necesario utilizando la sintaxis que se proporciona a continuación,

format FORMAT_NAME_BOTTOM
End of Page $%

Ejemplo:
Entrada: Usando 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++;
}

Producción:

Entrada: Obtener la salida en un archivo de texto.

#!/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;

Producción:

Archivo donde se imprimen los datos:

Paginación

La paginación entra en escena cuando tiene un informe largo que no cabe en una sola página. El uso de variables como $% o $FORMAT_PAGE_NUMBER junto con el encabezado en el formato ayuda a definir el número de página en más de una página. El número predeterminado de líneas en una página es 60, pero también se puede configurar manualmente usando las variables $= o $FORMAT_LINES_PER_PAGE .

Ejemplo:

#!/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++;
}

Producción:

Publicación traducida automáticamente

Artículo escrito por akshatyadav y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *