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
.
FormatName
representa 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.
fieldline
puede 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 .