Perl saída formatada
Perl é uma linguagem de dados de processamento de texto muito poderoso.
Perl pode ser usado para definir o formato do modelo e, em seguida, usar a saída de dados escrita pelo modelo especificado.
formato Perl sintaxe definida é a seguinte:
format FormatName = fieldline value_one, value_two, value_three fieldline value_one, value_two .
parâmetros analíticos:
- FormatName: nome do formato.
- Fieldline: um formato de linha, o formato usado para definir uma linha de saída, semelhante ao @, ^, <,>, | tais personagens.
- value_one, value_two ......: linhas de dados, usados para inserir valores para o formato de linha de frente, todas as variáveis do Perl.
- : Símbolo End.
O seguinte é um exemplo simples é formatado:
#!/usr/bin/perl $text = "google w3big taobao"; format STDOUT = first: ^<<<<< # 左边对齐,字符长度为6 $text second: ^<<<<< # 左边对齐,字符长度为6 $text third: ^<<<< # 左边对齐,字符长度为5,taobao 最后一个 o 被截断 $text . write
Execute o exemplo acima saída é:
first: google second: w3big third: taoba
linha Format (linha gráfica) sintaxe
- linhas de formato @ ou ^ no início, estas linhas não sejam objecto de qualquer forma de substituição de variáveis.
- O campo @ (não ser confundido com o marcador de matriz @) é um campo comum.
- @, <,>, ^ Após o | comprimento determina o comprimento do campo Se a variável excede o comprimento definido, ela irá ser truncado.
- <,>, | Também representam, alinhado à esquerda, alinhado à direita, centro alinhados.
- ^ Os campos de multi-linha bloco de texto de enchimento.
Faixa Format
Variedade de formatos, como se segue:
formato | Significado gama |
---|---|
@ <<< | saída esquerda |
@ >>> | saída justificado à direita |
@ ||| | alinhar saída |
@ ##. ## | número de precisão fixa |
@ * | Várias linhas de texto |
O primeiro caractere de cada linha é uma linha de caracteres de enchimento quando se utiliza o caractere @, não a formatação do texto.
Na tabela acima, além de multi-linha @ * gama, de grande área é igual a um número especificado de caracteres no caracter @, incluindo, por exemplo:
@###.##
Ela representa sete caracteres de largura, depois de quatro antes do ponto decimal, o ponto decimal dois.
Exemplos são os seguintes:
#!/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; }
O exemplo acima saída é:
=================================== Ali 20 2000.00 =================================== =================================== w3big 30 2500.00 =================================== =================================== Jaffer 40 4000.00 ===================================
formato variável
- $ ~ ($ FORMAT_NAME): Formato de nome $ ^ ($ FORMAT_TOP_NAME): O nome do formato atual é armazenada no cabeçalho
- $% ($ FORMAT_PAGE_NUMBER): o número da página corrente de saída
- $ = ($ FORMAT_LINES_PER_PAGE): o número de linhas na página
- $ | ($ FORMAT_AUTOFLUSH): se a liberar automaticamente a memória buffer de saída
- $ ^ L ($ FORMAT_FORMFEED): em cada página (exceto a primeira página) cabeçalho necessária antes que a cadeia de saída é armazenado em
O que se segue é um simples de usar $ instance - formato:
#!/usr/bin/perl $~ = "MYFORMAT"; # 指定缺省文件变量下所使用的格式 write; # 输出 $~ 所指定的格式 format MYFORMAT = # 定义格式 MYFORMAT ================================= Text # 本教程 ================================= . write;
Execute o exemplo acima saída é:
================================= Text # 本教程 ================================= ================================= Text # 本教程 =================================
Se você não especificar o $ ~ sob o caso, o formato de saída chamado STDOUT:
#!/usr/bin/perl write; # 不指定$~的情况下会寻找名为STDOUT的格式 format STDOUT = ~用~号指定的文字不会被输出 ---------------- STDOUT格式 ---------------- .
Execute o exemplo acima saída é:
---------------- STDOUT格式 ----------------
O exemplo a seguir nós adicionamos uma informação de cabeçalho do relatório para demonstrar as variáveis $ ^ ou US $ 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; }
O exemplo acima saída é:
=================================== Name Age =================================== =================================== Ali 20 2000.00 =================================== =================================== w3big 30 2500.00 =================================== =================================== Jaffer 40 4000.00 ===================================
Nós também pode usar o $% ou US $ FORMAT_PAGE_NUMBER pagination set para o relatório:
#!/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; }
O exemplo acima saída é:
=================================== Name Age Page 1 =================================== =================================== Ali 20 2000.00 =================================== =================================== w3big 30 2500.00 =================================== =================================== Jaffer 40 4000.00 ===================================
Saída para outro arquivo
Por padrão, a função irá escrever os resultados para o STDOUT arquivo de saída padrão, nós também podemos fazer isso gera o resultado para qualquer outro arquivo. A maneira mais fácil é para o arquivo variável como um parâmetro para escrever, tais como:
write(MYFILE);
Escrever o código acima para usar o formato de saída de impressão padrão para um arquivo chamado MYFILE MYFILE in.
Mas isso não pode ser usada para alterar o formato de impressão utilizados pelo variável $ ~. variáveis do sistema $ ~ variável funciona somente para o arquivo padrão, podemos mudar a variável $ default do ~ alterações, em seguida, chamar de gravação.
#!/usr/bin/perl if (open(MYFILE, ">tmp")) { $~ = "MYFORMAT"; write MYFILE; # 含文件变量的输出,此时会打印与变量同名的格式,即MYFILE。$~里指定的值被忽略。 format MYFILE = # 与文件变量同名 ================================= 输入到文件中 ================================= . close MYFILE; }
Após a implementação bem-sucedida, podemos ver o conteúdo do arquivo tmp, como segue:
$ cat tmp ================================= 输入到文件中 =================================
Podemos usar a seleção para alterar a variável de arquivo padrão, que retorna a variável interna atual indica o arquivo padrão, de modo que podemos criar um subprograma, de acordo com a sua própria produção ideias, sem afetar o resto do programa.
#!/usr/bin/perl if (open(MYFILE, ">>tmp")) { select (MYFILE); # 使得默认文件变量的打印输出到MYFILE中 $~ = "OTHER"; write; # 默认文件变量,打印到select指定的文件中,必使用$~指定的格式 OTHER format OTHER = ================================= 使用定义的格式输入到文件中 ================================= . close MYFILE; }
Após a implementação bem-sucedida, podemos ver o conteúdo do arquivo tmp, como segue:
$ cat tmp ================================= 输入到文件中 ================================= ================================= 使用定义的格式输入到文件中 =================================