Perl es un lenguaje de procesamiento de datos de texto muy poderoso.
En Perl, puede usar el formato para definir una plantilla y luego usar la escritura para generar datos de acuerdo con la plantilla especificada.
La sintaxis de definición de formato de Perl es la siguiente:
formato FormatName = línea de campo valor_uno, valor_dos, valor_tres línea de campo valor_uno, valor_dos.
Análisis de parámetros:
FormatName : nombre formateado.
línea de campo : una línea de formato utilizada para definir el formato de una línea de salida, con caracteres como @,^,,|.
valor_uno, valor_dos... : Las líneas de datos, utilizadas para insertar valores en las líneas de formato anteriores, son todas variables de Perl.
. : símbolo de fin.
El siguiente es un ejemplo de formato simple:
El resultado de la ejecución del ejemplo anterior es:
primero: googlesegundo: codificadorctotercero: taoba
Las líneas de formato comienzan con @ o ^ y no se realiza ninguna sustitución de variables en estas líneas.
Los campos @ (que no deben confundirse con el símbolo de matriz @) son campos normales.
La longitud de <, >,| después de @,^ determina la longitud del campo. Si la variable excede la longitud definida, se truncará.
<, >,| también representan alineación a la izquierda, alineación a la derecha y alineación central respectivamente.
El campo ^ se utiliza para el relleno de bloques de texto de varias líneas.
El formato del rango de valores es el que se muestra en la siguiente tabla:
Formato | Significado del rango de valores |
---|---|
@<<< | salida alineada a la izquierda |
@>>> | Salida justificada a la derecha |
@||| | Salida alineada al centro |
@##.## | número de precisión fija |
@* | texto multilínea |
El primer carácter de cada campo de valor es el carácter de relleno de línea. Cuando se utiliza el carácter @, no se realiza ningún formato de texto.
En la tabla anterior, a excepción del campo de valor de varias líneas @*, el ancho del campo es igual al número especificado de caracteres, incluido el carácter @, por ejemplo:
@###.##
Significa siete caracteres de ancho, cuatro antes del punto decimal y dos después del punto decimal.
Los ejemplos son los siguientes:
El resultado de salida del ejemplo anterior es:
===================================Ali 20 2000.00============ ==================================================== ========Codercto 30 2500.00==================================================== = =====================Jaffer 40 4000.00========================== ==========
$~ ($FORMAT_NAME): Nombre del formato $^ ($FORMAT_TOP_NAME): El nombre del formato del encabezado actual se almacena en
$% ($FORMAT_PAGE_NUMBER): número de página de salida actual
$= ($FORMAT_LINES_PER_PAGE) : Número de líneas en cada página
$| ($FORMAT_AUTOFLUSH): si se actualiza automáticamente el almacenamiento del búfer de salida
$^L ($FORMAT_FORMFEED): la cadena que debe generarse antes de que el encabezado de cada página (excepto la primera página) se almacene en
El siguiente es un ejemplo de formato simple usando $~:
El resultado de la ejecución del ejemplo anterior es:
================================= Texto # Tutorial del codificador============ = ================================================== = === Texto # Tutorial del codificador ===================================
Si no se especifica $~, se generará un formato llamado STDOUT:
El resultado de la ejecución del ejemplo anterior es:
----------------Formato STDOUT----------------
En el siguiente ejemplo, demostramos el uso de las variables $^ o $FORMAT_TOP_NAME agregando información del encabezado del informe:
El resultado de salida del ejemplo anterior es:
===================================Nombre Edad============== = =================================================== = =======Ali 20 2000.00======================================== === ===============================Codercto 30 2500.00==================================================== = =====================Jaffer 40 4000.00========================== ==========
También podemos usar $% o $FORMAT_PAGE_NUMBER para configurar la paginación del informe:
El resultado de salida del ejemplo anterior es:
===================================Nombre Edad Página 1=========== = =================================================== = =========Ali 20 2000.00====================================== === =================================Codercto 30 2500.00==================================================== = =====================Jaffer 40 4000.00========================== ==========
De forma predeterminada, la función de escritura envía los resultados al archivo de salida estándar STDOUT, pero también podemos hacer que envíe los resultados a cualquier otro archivo. La forma más sencilla es pasar la variable del archivo como parámetro para escribir, como por ejemplo:
escribir(MIARCHIVO);
El código anterior escribe resultados en el archivo MYFILE utilizando el formato de impresión predeterminado llamado MYFILE.
Pero entonces no puede usar la variable $~ para cambiar el formato de impresión utilizado. La variable del sistema $~ solo afecta la variable del archivo predeterminado. Podemos cambiar la variable del archivo predeterminado, cambiar $~ y luego llamar a escribir.
Después de una ejecución exitosa, podemos ver el contenido del archivo tmp de la siguiente manera:
$ cat tmp ================================= Entrada en el archivo ========== = =======================
Cuando podemos usar select para cambiar la variable de archivo predeterminada, devuelve la representación interna de la variable de archivo predeterminada actual, de modo que podamos crear subrutinas y resultados de acuerdo con nuestras propias ideas sin afectar otras partes del programa.
Después de una ejecución exitosa, podemos ver el contenido del archivo tmp de la siguiente manera:
$ cat tmp ================================= Entrada en el archivo ========== = ================================================== = ===== Entrada en el archivo usando el formato definido ====================================