Perl é uma linguagem de processamento de dados de texto muito poderosa.
Em Perl, você pode usar o formato para definir um modelo e, em seguida, usar a gravação para gerar dados de acordo com o modelo especificado.
A sintaxe de definição de formatação Perl é a seguinte:
formato FormatoNome =campolinhavalor_um, valor_dois, valor_trêscampolinhavalor_um, valor_dois.
Análise de parâmetros:
FormatName : Nome formatado.
fieldline : Uma linha de formato usada para definir o formato de uma linha de saída, com caracteres como @,^,,|.
valor_um, valor_dois... : As linhas de dados, usadas para inserir valores nas linhas de formato anteriores, são todas variáveis perl.
. : símbolo de fim.
A seguir está um exemplo simples de formatação:
O resultado de saída da execução do exemplo acima é:
primeiro: googlesegundo: coderctoterceiro: taoba
As linhas de formato começam com @ ou ^ e nenhuma substituição de variável é executada nessas linhas.
Os campos @ (não devem ser confundidos com o símbolo de matriz @) são campos comuns.
O comprimento de <, >,| após @,^ determina o comprimento do campo. Se a variável exceder o comprimento definido, ela será truncada.
<, >,| também representam alinhamento à esquerda, alinhamento à direita e alinhamento central, respectivamente.
O campo ^ é usado para preenchimento de bloco de texto com várias linhas.
O formato do intervalo de valores é mostrado na tabela a seguir:
Formatar | Significado da faixa de valores |
---|---|
@<<< | saída alinhada à esquerda |
@>>> | Saída justificada à direita |
@||| | Saída alinhada ao centro |
@##.## | número de precisão fixa |
@* | texto multilinha |
O primeiro caractere de cada campo de valor é o caractere de preenchimento de linha. Quando o caractere @ é usado, nenhuma formatação de texto é feita.
Na tabela acima, exceto para o campo de valor multilinha @*, a largura do campo é igual ao número especificado de caracteres, incluindo o caractere @, por exemplo:
@###.##
Significa sete caracteres de largura, quatro antes da vírgula e dois após a vírgula.
Os exemplos são os seguintes:
O resultado de saída do exemplo acima é:
==================================Ali 20 2000.00============= ================================================= ========Codercto 30 2500,00 ================================================= = ===================== Jaffer 40 4000.00========================= ==========
$~ ($FORMAT_NAME): Nome do formato $^ ($FORMAT_TOP_NAME): O nome do formato do cabeçalho atual é armazenado em
$% ($FORMAT_PAGE_NUMBER): número da página de saída atual
$= ($FORMAT_LINES_PER_PAGE): Número de linhas em cada página
$| ($FORMAT_AUTOFLUSH): Se deve atualizar automaticamente o armazenamento do buffer de saída
$^L ($FORMAT_FORMFEED): A string que precisa ser gerada antes que o cabeçalho de cada página (exceto a primeira página) seja armazenado em
A seguir está um exemplo de formatação simples usando $~:
O resultado de saída da execução do exemplo acima é:
================================ Texto # Tutorial do codificador ============ = ================================================ = === Texto # Tutorial do codificador ===================================
Se $~ não for especificado, um formato chamado STDOUT será gerado:
O resultado de saída da execução do exemplo acima é:
----------------Formato STDOUT----------------
No exemplo a seguir, demonstramos o uso das variáveis $^ ou $FORMAT_TOP_NAME adicionando informações de cabeçalho do relatório:
O resultado de saída do exemplo acima é:
==================================Nome Idade============= ================================================= = =======Ali 20 2000.00======================================= === ==============================Codercto 30 2500,00 ================================================= = ===================== Jaffer 40 4000.00========================= ==========
Também podemos usar $% ou $FORMAT_PAGE_NUMBER para definir a paginação do relatório:
O resultado de saída do exemplo acima é:
================================== Nome Idade Página 1=========== ================================================= = =========Ali 20 2000.00===================================== === ================================Codercto 30 2500,00 ================================================= = ===================== Jaffer 40 4000.00========================= ==========
Por padrão, a função write envia os resultados para o arquivo de saída padrão STDOUT, mas também podemos fazer com que ela envie os resultados para qualquer outro arquivo. A maneira mais simples é passar a variável do arquivo como parâmetro para escrever, como por exemplo:
escreva(MEUARQUIVO);
O código acima grava as saídas no arquivo MYFILE usando o formato de impressão padrão denominado MYFILE.
Mas então você não pode usar a variável $~ para alterar o formato de impressão usado. A variável de sistema $~ afeta apenas a variável de arquivo padrão. Podemos alterar a variável de arquivo padrão, alterar $~ e então chamar write.
Após a execução bem-sucedida, podemos visualizar o conteúdo do arquivo tmp da seguinte forma:
$ cat tmp ================================= Entrada no arquivo ========== = ======================
Quando podemos usar select para alterar a variável de arquivo padrão, ele retorna a representação interna da variável de arquivo padrão atual, para que possamos criar sub-rotinas e produzir de acordo com nossas próprias ideias, sem afetar outras partes do programa.
Após a execução bem-sucedida, podemos visualizar o conteúdo do arquivo tmp da seguinte forma:
$ cat tmp ================================= Entrada no arquivo ========== = ================================================ = ===== Entrada no arquivo usando formato definido ===================================