Latest web development tutorials

Perl salida con formato

Perl es un lenguaje muy potente de datos de procesamiento de texto.

Perl se puede utilizar para definir un formato de plantilla y, a continuación, utilizar la salida de datos de escritura por la plantilla especificada.

sintaxis definida formato Perl es el siguiente:

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

parámetros analíticos:

  • FormatName: nombre de formato.
  • Fieldline: un formato de filas, el formato utilizado para definir una línea de salida, de forma similar a la @, ^, <,>, | este tipo de personajes.
  • value_one, value_two ......: filas de datos, que se utiliza para insertar valores en el formato de fila, todas las variables de Perl.
  • : Símbolo End.

A continuación se formatea un ejemplo sencillo:

#!/usr/bin/perl

$text = "google w3big taobao";
format STDOUT =
first: ^<<<<<  # 左边对齐,字符长度为6
    $text
second: ^<<<<< # 左边对齐,字符长度为6
    $text
third: ^<<<< # 左边对齐,字符长度为5,taobao 最后一个 o 被截断
    $text  
.
write

Realizar la salida anterior ejemplo es:

first: google
second: w3big
third: taoba

Formato fila (fila gráfico) Sintaxis

  • líneas de formato @ o ^ al principio, estas líneas no se someten a ningún tipo de sustitución de variables.
  • @ Campo (que no debe confundirse con la matriz marcador @) es un campo común.
  • @, <,>, ^ Después de la | longitud determina la longitud del campo si la variable supera la longitud definida, se trunca.
  • <,>, | También representan, alineado a la izquierda, derecha-alineado, centro alineado.
  • ^ Los campos de varias líneas de llenado bloque de texto.

Rango de formato

Gama de formatos, como sigue:

formato Significado gama
@ <<< salida izquierda
@ >>> ajustado a la derecha
@ ||| alinear la salida
@ ## ##. número de precisión fija
@ * Varias líneas de texto

El primer carácter de cada línea es una serie de caracteres de relleno cuando se utiliza el carácter @, no el formato de texto.

En la tabla anterior, además de la línea multi-@ * gama, de gran campo son iguales a un número determinado de caracteres en el carácter @, incluyendo, por ejemplo:

@###.##

Representa siete caracteres de ancho, después de las cuatro antes de la coma, el punto dos decimales.

Ejemplos son los siguientes:

#!/usr/bin/perl

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

select(STDOUT);
$~ = EMPLOYEE;

@n = ("Ali", "w3big", "Jaffer");
@a  = (20,30, 40);
@s = (2000.00, 2500.00, 4000.000);

$i = 0;
foreach (@n){
	$name = $_;
	$age = $a[$i];
	$salary = $s[$i++];
	write;
}

La salida del ejemplo anterior es:

===================================
Ali                     20
  2000.00
===================================
===================================
w3big                  30
  2500.00
===================================
===================================
Jaffer                  40
  4000.00
===================================

formato de variables

  • $ ~ ($ FORMAT_NAME): Nombre del formato $ ^ ($ FORMAT_TOP_NAME): El nombre del formato actual se almacena en la cabecera
  • $% ($ FORMAT_PAGE_NUMBER): el número de página de salida actual
  • $ = ($ FORMAT_LINES_PER_PAGE): el número de líneas en la página
  • $ | ($ FORMAT_AUTOFLUSH): si se debe vaciar automáticamente la memoria búfer de salida
  • $ ^ L ($ FORMAT_FORMFEED): en cada página (excepto la primera página) cabecea requerido antes de la cadena de salida se almacena en

El siguiente es un simple utilizar el ejemplo $ - Formato:

#!/usr/bin/perl

$~ = "MYFORMAT"; # 指定缺省文件变量下所使用的格式
write;           # 输出 $~ 所指定的格式

format MYFORMAT = # 定义格式 MYFORMAT 
=================================
      Text # 本教程
=================================
.
write; 

Realizar la salida anterior ejemplo es:

=================================
      Text # 本教程
=================================
=================================
      Text # 本教程
=================================

Si no se especifica el $ ~ debajo de la caja, el formato de salida STDOUT llama:

#!/usr/bin/perl

write;         # 不指定$~的情况下会寻找名为STDOUT的格式

format STDOUT =
~用~号指定的文字不会被输出
----------------
  STDOUT格式
----------------
.

Realizar la salida anterior ejemplo es:

----------------
  STDOUT格式
----------------

En el siguiente ejemplo se añade una información de cabecera del informe para demostrar las variables $ ^ $ o FORMAT_TOP_NAME:

#!/usr/bin/perl

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

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

select(STDOUT);
$~ = EMPLOYEE;
$^ = EMPLOYEE_TOP;

@n = ("Ali", "w3big", "Jaffer");
@a  = (20,30, 40);
@s = (2000.00, 2500.00, 4000.000);

$i = 0;
foreach (@n){
   $name = $_;
   $age = $a[$i];
   $salary = $s[$i++];
   write;
}

La salida del ejemplo anterior es:

===================================
Name                    Age
===================================
===================================
Ali                     20
  2000.00
===================================
===================================
w3big                  30
  2500.00
===================================
===================================
Jaffer                  40
  4000.00
===================================

También podemos utilizar el $% o $ FORMAT_PAGE_NUMBER paginación conjunto para el informe:

#!/usr/bin/perl

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

# 添加分页 $% 
format EMPLOYEE_TOP =
===================================
Name                    Age Page @<
                                 $%
=================================== 
.

select(STDOUT);
$~ = EMPLOYEE;
$^ = EMPLOYEE_TOP;

@n = ("Ali", "w3big", "Jaffer");
@a  = (20,30, 40);
@s = (2000.00, 2500.00, 4000.000);

$i = 0;
foreach (@n){
   $name = $_;
   $age = $a[$i];
   $salary = $s[$i++];
   write;
}

La salida del ejemplo anterior es:

===================================
Name                    Age Page 1
===================================
===================================
Ali                     20
  2000.00
===================================
===================================
w3big                  30
  2500.00
===================================
===================================
Jaffer                  40
  4000.00
===================================

La salida a otro archivo

Por defecto, la función va a escribir los resultados a la salida estándar de archivo de salida estándar, también podemos hacer que envía el resultado a cualquier otro archivo. La forma más fácil es presentar variable como un parámetro para escribir, tales como:

write(MYFILE);

Escribe el código anterior para utilizar el formato de salida de impresión por defecto a un archivo llamado MIARCHIVO MIARCHIVO en.

Pero esto no puede ser utilizado para cambiar el formato de impresión utilizado por variable $ ~. Las variables del sistema $ ~ variables sólo funciona para el archivo por defecto, podemos cambiar la variable de archivo predeterminado $ ~ cambios, a continuación, llamar escritura.

#!/usr/bin/perl

if (open(MYFILE, ">tmp")) {
$~ = "MYFORMAT";
write MYFILE; # 含文件变量的输出,此时会打印与变量同名的格式,即MYFILE。$~里指定的值被忽略。

format MYFILE = # 与文件变量同名 
=================================
      输入到文件中
=================================
.
close MYFILE;
}

Después de la aplicación con éxito, podemos ver el contenido del archivo tmp, de la siguiente manera:

$ cat tmp 
=================================
      输入到文件中
=================================

Podemos utilizar el selecto para cambiar la variable de archivo predeterminado, que devuelve la variable interna actual indica que el archivo por defecto, por lo que podemos crear un subprograma, de acuerdo con su propia salida de las ideas, sin afectar al resto del programa.

#!/usr/bin/perl

if (open(MYFILE, ">>tmp")) {
select (MYFILE); # 使得默认文件变量的打印输出到MYFILE中
$~ = "OTHER";
write;           # 默认文件变量,打印到select指定的文件中,必使用$~指定的格式 OTHER

format OTHER =
=================================
  使用定义的格式输入到文件中
=================================
. 
close MYFILE;
}

Después de la aplicación con éxito, podemos ver el contenido del archivo tmp, de la siguiente manera:

$ cat tmp 
=================================
      输入到文件中
=================================
=================================
  使用定义的格式输入到文件中
=================================