Formatos Perl - Escrevendo relatórios

Como afirmado anteriormente, Perl significa Practical Extraction and Reporting Language, e agora discutiremos o uso de Perl para escrever relatórios.

Perl usa um modelo de escrita chamado 'formato' para gerar relatórios. Para usar o recurso de formatação do Perl, você deve -

  • Defina um formato
  • Passe os dados que serão exibidos no formato
  • Invoque o formato

Defina um formato

A seguir está a sintaxe para definir um formato Perl

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

FormatNamerepresenta o nome do formato. A fieldline é a maneira específica como os dados devem ser formatados. As linhas de valores representam os valores que serão inseridos na linha do campo. Você termina o formato com um único ponto.

fieldlinepode conter qualquer texto ou campos. Os responsáveis ​​pelo campo mantêm espaço para dados que serão colocados lá em uma data posterior. Um fieldholder tem o formato -

@<<<<

Este campo é justificado à esquerda, com um espaço de campo de 5. Você deve contar o sinal @ e os sinais <para saber o número de espaços no campo. Outros titulares de campo incluem

@>>>> right-justified
   @|||| centered
   @####.## numeric field holder
   @* multiline field holder

Um exemplo de formato seria -

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

Neste exemplo, $ name seria escrito justificado à esquerda dentro de 22 espaços de caracteres e, após essa idade, seria escrito em dois espaços.

Invoque o formato para gravar dados

Para invocar esta declaração de formato, usaríamos a palavra-chave write -

write EMPLOYEE; #send to the output

O problema é que o nome do formato é geralmente o nome de um identificador de arquivo aberto e a instrução de gravação enviará a saída para esse identificador de arquivo. Como queremos que os dados sejam enviados ao STDOUT, devemos associar EMPLOYEE ao arquivo STDOUT. Primeiro, no entanto, devemos ter certeza de que STDOUT é o nosso identificador de arquivo selecionado, usando a função select ()

select(STDOUT);

Em seguida, associaríamos EMPLOYEE a STDOUT definindo o novo nome de formato com STDOUT, usando a variável especial $ ~

$~ = "EMPLOYEE";

Quando agora fazemos um write (), os dados seriam enviados para STDOUT. Lembre-se: se você não definiu STDOUT como seu identificador de arquivo padrão, você pode reverter para o identificador de arquivo original atribuindo o valor de retorno de select a um valor escalar e usando select junto com esta variável escalar após a variável especial ser atribuído o nome do formato, para ser associado a STDOUT.

O exemplo acima irá gerar um relatório no seguinte formato

Kirsten              12
   Mohammad             35
   Suhi                 15
   Namrat               10

Definindo um cabeçalho de relatório

Tudo parece bem. Mas você estaria interessado em adicionar um cabeçalho ao seu relatório. Este cabeçalho será impresso no topo de cada página. É muito simples fazer isso. Além de definir um modelo, você teria que definir um cabeçalho que terá o mesmo nome, mas anexado com a palavra-chave _TOP como segue

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

Agora seu relatório será semelhante a

------------------------
   Name                 Age
   ------------------------
   Kirsten              12
   Mohammad             35
   Suhi                 15
   Namrat               10

Definindo uma paginação e número de linhas em uma página

E se o seu relatório ocupar mais de uma página? Você tem uma solução para isso. Use $%vairable junto com o cabeçalho da seguinte forma

format EMPLOYEE_TOP =
   ------------------------
   Name                 Age   Page @<
   ------------------------        $%
   .

Agora sua saída será semelhante a

------------------------
   Name                 Age   Page 1
   ------------------------    
   Kirsten              12
   Mohammad             35
   Suhi                 15
   Namrat               10

Você pode definir o número de linhas por página usando a variável especial $=(ou $ FORMAT_LINES_PER_PAGE) Por padrão $ = será 60

Definindo um rodapé de relatório

Uma última coisa que resta é o rodapé. Muito parecido com o cabeçalho, você pode definir um rodapé e ele será escrito após cada página. Aqui, você usará a palavra-chave _BOTTOM em vez de _TOP.

format EMPLOYEE_BOTTOM =
   End of Page @<
               $%
   .

Isso lhe dará o seguinte resultado

------------------------
   Name                 Age   Page 1
   ------------------------    
   Kirsten              12
   Mohammad             35
   Suhi                 15
   Namrat               10
   End of Page 1

Para um conjunto completo de variáveis ​​relacionadas à formatação, consulte a seção Variáveis ​​Especiais Perl .