Formatos Perl: redacción de informes

Como se indicó anteriormente, Perl significa Practical Extraction and Reporting Language, y ahora discutiremos el uso de Perl para escribir informes.

Perl usa una plantilla de escritura llamada 'formato' para generar informes. Para utilizar la función de formato de Perl, debe:

  • Definir un formato
  • Pasar los datos que se mostrarán en el formato
  • Invocar el formato

Definir un formato

A continuación se muestra la sintaxis para definir un formato Perl

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

FormatNamerepresenta el nombre del formato. La línea de campo es la forma específica en que se deben formatear los datos. Las líneas de valores representan los valores que se ingresarán en la línea de campo. Terminas el formato con un solo punto.

fieldlinepuede contener cualquier texto o marcadores de campo. Los marcadores de campo tienen espacio para los datos que se colocarán allí en una fecha posterior. Un marcador de campo tiene el formato:

@<<<<

Este marcador de campo está justificado a la izquierda, con un espacio de campo de 5. Debe contar el signo @ y los signos <para saber el número de espacios en el campo. Otros titulares de campo incluyen

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

Un formato de ejemplo sería:

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

En este ejemplo, $ name se escribiría justificado a la izquierda dentro de 22 espacios de caracteres y después de esa edad se escribiría en dos espacios.

Invocar el formato para escribir datos

Para invocar esta declaración de formato, usaríamos la palabra clave write -

write EMPLOYEE; #send to the output

El problema es que el nombre del formato suele ser el nombre de un identificador de archivo abierto, y la instrucción de escritura enviará la salida a este identificador de archivo. Como queremos que los datos se envíen al STDOUT, debemos asociar EMPLOYEE con el identificador de archivo STDOUT. Primero, sin embargo, debemos asegurarnos de que STDOUT sea nuestro identificador de archivo seleccionado, usando la función select ()

select(STDOUT);

Luego asociaríamos EMPLEADO con STDOUT estableciendo el nuevo nombre de formato con STDOUT, usando la variable especial $ ~

$~ = "EMPLOYEE";

Cuando ahora hacemos un write (), los datos se enviarán a STDOUT. Recuerde: si no tenía STDOUT establecido como su identificador de archivo predeterminado, puede volver al identificador de archivo original asignando el valor de retorno de select a un valor escalar, y usando select junto con esta variable escalar después de que la variable especial sea asignado el nombre de formato, que se asociará con STDOUT.

El ejemplo anterior generará un informe en el siguiente formato

Kirsten              12
   Mohammad             35
   Suhi                 15
   Namrat               10

Definición de un encabezado de informe

Todo luce bien. Pero le interesaría agregar un encabezado a su informe. Este encabezado se imprimirá en la parte superior de cada página. Es muy sencillo hacer esto. Además de definir una plantilla, tendría que definir un encabezado que tendrá el mismo nombre pero adjunto con la palabra clave _TOP de la siguiente manera

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

Ahora su informe se verá como

------------------------
   Name                 Age
   ------------------------
   Kirsten              12
   Mohammad             35
   Suhi                 15
   Namrat               10

Definición de una paginación y número de líneas en una página

¿Qué pasa si su informe ocupa más de una página? Tienes una solución para eso. Use $%vairable junto con el encabezado de la siguiente manera

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

Ahora tu salida se verá como

------------------------
   Name                 Age   Page 1
   ------------------------    
   Kirsten              12
   Mohammad             35
   Suhi                 15
   Namrat               10

Puede establecer el número de líneas por página usando una variable especial $=(o $ FORMAT_LINES_PER_PAGE) Por defecto, $ = será 60

Definición de un pie de página de informe

Queda una última cosa que es el pie de página. Muy similar al encabezado, puede definir un pie de página y se escribirá después de cada página. Aquí utilizará la palabra clave _BOTTOM en lugar de _TOP.

format EMPLOYEE_BOTTOM =
   End of Page @<
               $%
   .

Esto le dará el siguiente resultado

------------------------
   Name                 Age   Page 1
   ------------------------    
   Kirsten              12
   Mohammad             35
   Suhi                 15
   Namrat               10
   End of Page 1

Para obtener un conjunto completo de variables relacionadas con el formateo, consulte la sección Variables especiales de Perl .