Formato de salida de Perl
Perl es un lenguaje de procesamiento de datos de texto muy potente.
En Perl se puede usar `format` para definir una plantilla, y luego usar `write` para generar datos según la plantilla especificada.
La sintaxis de definición de formato en Perl es la siguiente:
format FormatName = fieldline value_one, value_two, value_three fieldline value_one, value_two .
Análisis de parámetros:
- FormatName: nombre del formato.
- fieldline: una línea de formato, que se usa para definir el formato de una línea de salida, con caracteres como @, ^, <, >, |.
- value_one,value_two……: línea de datos, que se usa para insertar valores en la línea de formato anterior; son variables de Perl.
- .: símbolo de terminación.
A continuación se muestra un ejemplo simple de formato:
Ejemplo
El resultado de ejecutar el ejemplo anterior es:
first: google second: ejemplo third: taoba
Sintaxis de línea de formato (línea gráfica)
- Las líneas de formato comienzan con @ o ^; estas líneas no realizan ningún tipo de sustitución de variables.
- El campo @ (no confundir con el símbolo de matriz @) es un campo normal.
- Las longitudes de <, >, | después de @, ^ determinan la longitud del campo. Si la variable excede la longitud definida, se truncará.
- <, >, | también indican respectivamente alineación a la izquierda, alineación a la derecha y alineación centrada.
- El campo ^ se usa para rellenar bloques de texto de varias líneas.
Formato de campo
El formato de los campos se muestra en la siguiente tabla:
| Formato | Significado del campo |
|---|---|
| @<<< | Salida alineada a la izquierda |
| @>>> | Salida alineada a la derecha |
| @||| | Salida centrada |
| @##.## | Número de precisión fija |
| @* | Texto multilínea |
El primer carácter de cada campo es el carácter de relleno de línea; cuando se usa el carácter @, no se aplica formato de texto.
En la tabla anterior, excepto el campo multilínea @*, el ancho del campo es igual al número de caracteres especificados, incluido el carácter @. Por ejemplo:
@###.##
Representa un ancho de siete caracteres, cuatro antes del punto decimal y dos después.
El ejemplo es el siguiente:
Ejemplo
El resultado del ejemplo anterior es:
=================================== Ali 20 2000.00 =================================== =================================== Ejemplo 30 2500.00 =================================== =================================== Jaffer 40 4000.00 ===================================
Variables de formato
- $~ ($FORMAT_NAME): nombre del formato $^ ($FORMAT_TOP_NAME): almacena el nombre del formato de encabezado actual
- $% ($FORMAT_PAGE_NUMBER): número de página actual de salida
- $= ($FORMAT_LINES_PER_PAGE): número de líneas por página
- $| ($FORMAT_AUTOFLUSH): si se debe vaciar automáticamente el búfer de salida
- $^L ($FORMAT_FORMFEED): almacena la cadena que se debe generar antes del encabezado de cada página (excepto la primera)
A continuación se muestra un ejemplo simple de uso de $~ para formatear:
Ejemplo
El resultado de ejecutar el ejemplo anterior es:
=================================
Text # Ejemplo
=================================
=================================
Text # Ejemplo
=================================
Si no se especifica $~, se generará el formato llamado STDOUT:
Ejemplo
El resultado de ejecutar el ejemplo anterior es:
---------------- STDOUT格式 ----------------
En el siguiente ejemplo, demostramos el uso de las variables $^ o $FORMAT_TOP_NAME agregando información de encabezado al informe:
Ejemplo
El resultado del ejemplo anterior es:
=================================== Name Age =================================== =================================== Ali 20 2000.00 =================================== =================================== Ejemplo 30 2500.00 =================================== =================================== Jaffer 40 4000.00 ===================================
También podemos usar $% o $FORMAT_PAGE_NUMBER para configurar la paginación del informe:
Ejemplo
El resultado del ejemplo anterior es:
=================================== Name Age Page 1 =================================== =================================== Ali 20 2000.00 =================================== =================================== Ejemplo 30 2500.00 =================================== =================================== Jaffer 40 4000.00 ===================================
Salida a otros archivos
De forma predeterminada, la función write envía el resultado al archivo de salida estándar STDOUT; también podemos hacer que lo envíe a cualquier otro archivo. El método más simple es pasar la variable de archivo como parámetro a write, por ejemplo:
write(MYFILE);
El código anterior usa el formato de impresión predeterminado llamado MYFILE para generar en el archivo MYFILE.
Pero así no se puede usar la variable $~ para cambiar el formato de impresión utilizado. La variable del sistema $~ solo afecta a la variable de archivo predeterminada; podemos cambiar la variable de archivo predeterminada, cambiar $~ y luego llamar a write.
Ejemplo
Después de una ejecución exitosa, podemos ver el contenido del archivo tmp, como se muestra a continuación:
$ cat tmp
=================================
输入到文件中
=================================
Al usar select para cambiar la variable de archivo predeterminada, esta devuelve la representación interna de la variable de archivo predeterminada actual, de modo que podemos crear subrutinas para generar según nuestras propias ideas sin afectar otras partes del programa.
Ejemplo
Después de una ejecución exitosa, podemos ver el contenido del archivo tmp, como se muestra a continuación:
$ cat tmp
=================================
输入到文件中
=================================
=================================
使用定义的格式输入到文件中
=================================
Otras extensiones