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
.
FormatName
representa 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.
fieldline
pode 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 .