Formati Perl - Scrittura di report

Come affermato in precedenza, Perl sta per Practical Extraction and Reporting Language, e ora discuteremo dell'uso di Perl per scrivere report.

Perl utilizza un modello di scrittura chiamato "formato" per l'output dei rapporti. Per utilizzare la funzione di formattazione di Perl, devi:

  • Definisci un formato
  • Passa i dati che verranno visualizzati nel formato
  • Richiama il formato

Definisci un formato

La seguente è la sintassi per definire un formato Perl

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

FormatNamerappresenta il nome del formato. La linea di campo è il modo specifico in cui i dati devono essere formattati. Le righe dei valori rappresentano i valori che verranno inseriti nella riga del campo. Finisci il formato con un solo punto.

fieldlinepuò contenere qualsiasi testo o fieldholder. I titolari di campo mantengono lo spazio per i dati che verranno inseriti lì in un secondo momento. Un titolare di campo ha il formato:

@<<<<

Questo segnaposto è giustificato a sinistra, con uno spazio del campo pari a 5. È necessario contare i segni @ e <per conoscere il numero di spazi nel campo. Altri proprietari di campo includono

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

Un formato di esempio potrebbe essere:

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

In questo esempio $ nome verrebbe scritto come giustificato a sinistra entro 22 spazi di caratteri e dopo tale età verrà scritto in due spazi.

Richiama il formato per scrivere i dati

Per richiamare questa dichiarazione di formato, utilizzeremo la parola chiave write -

write EMPLOYEE; #send to the output

Il problema è che il nome del formato è in genere il nome di un handle di file aperto e l'istruzione write invierà l'output a questo handle di file. Dato che vogliamo che i dati vengano inviati allo STDOUT, dobbiamo associare EMPLOYEE al filehandle STDOUT. Per prima cosa, tuttavia, dobbiamo assicurarci che STDOUT sia il nostro handle di file selezionato, utilizzando la funzione select ()

select(STDOUT);

Assoceremo quindi EMPLOYEE a STDOUT impostando il nome del nuovo formato con STDOUT, utilizzando la variabile speciale $ ~

$~ = "EMPLOYEE";

Quando ora eseguiamo una write (), i dati verranno inviati a STDOUT. Ricorda: se non hai impostato STDOUT come handle di file predefinito, puoi tornare all'handle di file originale assegnando il valore di ritorno di select a un valore scalare e usando select insieme a questa variabile scalare dopo che la variabile speciale è assegnato il nome del formato, da associare a STDOUT.

L'esempio sopra genererà un rapporto nel seguente formato

Kirsten              12
   Mohammad             35
   Suhi                 15
   Namrat               10

Definizione di un'intestazione del report

Sembra tutto a posto. Ma ti interesserebbe aggiungere un'intestazione al tuo rapporto. Questa intestazione verrà stampata nella parte superiore di ogni pagina. È molto semplice farlo. Oltre a definire un modello dovresti definire un'intestazione che avrà lo stesso nome ma aggiunto con la parola chiave _TOP come segue

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

Ora il tuo rapporto sarà simile

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

Definizione dell'impaginazione e del numero di righe in una pagina

E se il tuo rapporto occupa più di una pagina? Hai una soluzione per questo. Usa $%vairable insieme all'intestazione come segue

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

Ora il tuo output sarà simile a

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

Puoi impostare il numero di righe per pagina utilizzando una variabile speciale $=(o $ FORMAT_LINES_PER_PAGE) Per impostazione predefinita $ = sarà 60

Definizione di un piè di pagina del report

Un'ultima cosa è rimasta che è footer. Molto simile all'intestazione, puoi definire un piè di pagina e verrà scritto dopo ogni pagina. Qui utilizzerai la parola chiave _BOTTOM invece di _TOP.

format EMPLOYEE_BOTTOM =
   End of Page @<
               $%
   .

Questo ti darà il seguente risultato

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

Per un set completo di variabili relative alla formattazione, fare riferimento alla sezione Variabili speciali di Perl .