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
.
FormatName
rappresenta 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.
fieldline
può 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 .