Formats Perl - Rédaction de rapports
Comme indiqué précédemment, Perl signifie Practical Extraction and Reporting Language, et nous allons maintenant discuter de l'utilisation de Perl pour rédiger des rapports.
Perl utilise un modèle d'écriture appelé «format» pour produire des rapports. Pour utiliser la fonction de formatage de Perl, vous devez -
- Définir un format
- Passez les données qui seront affichées sur le format
- Invoquer le format
Définir un format
Voici la syntaxe pour définir un format Perl
format FormatName =
fieldline
value_one, value_two, value_three
fieldline
value_one, value_two
.
FormatName
représente le nom du format. La ligne de champ est la manière spécifique dont les données doivent être formatées. Les lignes de valeurs représentent les valeurs qui seront entrées dans la ligne de champ. Vous terminez le format avec une seule période.
fieldline
peut contenir n'importe quel texte ou détenteurs de champ. Les détenteurs de champ contiennent de l'espace pour les données qui y seront placées à une date ultérieure. Un fieldholder a le format -
@<<<<
Ce champ est justifié à gauche, avec un espace de champ de 5. Vous devez compter le signe @ et les signes <pour connaître le nombre d'espaces dans le champ. Les autres détenteurs de champ comprennent
@>>>> right-justified
@|||| centered
@####.## numeric field holder
@* multiline field holder
Un exemple de format serait -
format EMPLOYEE =
===================================
@<<<<<<<<<<<<<<<<<<<<<< @<<
$name $age
@#####.##
$salary
===================================
.
Dans cet exemple, $ name sera écrit comme justifié à gauche dans les 22 espaces et après cet âge, il sera écrit dans deux espaces.
Appelez le format pour écrire des données
Pour invoquer cette déclaration de format, nous utiliserions le mot-clé write -
write EMPLOYEE; #send to the output
Le problème est que le nom du format est généralement le nom d'un descripteur de fichier ouvert, et l'instruction d'écriture enverra la sortie à ce descripteur de fichier. Comme nous voulons que les données soient envoyées au STDOUT, nous devons associer EMPLOYEE au descripteur de fichier STDOUT. Cependant, nous devons d'abord nous assurer que STDOUT est notre descripteur de fichier sélectionné, en utilisant la fonction select ()
select(STDOUT);
Nous associerions alors EMPLOYEE à STDOUT en définissant le nouveau nom de format avec STDOUT, en utilisant la variable spéciale $ ~
$~ = "EMPLOYEE";
Lorsque nous faisons maintenant un write (), les données seraient envoyées à STDOUT. N'oubliez pas: si vous n'avez pas défini STDOUT comme descripteur de fichier par défaut, vous pouvez revenir au descripteur de fichier d'origine en affectant la valeur de retour de select à une valeur scalaire et en utilisant select avec cette variable scalaire après que la variable spéciale est assigné le nom du format, à associer à STDOUT.
L'exemple ci-dessus générera un rapport au format suivant
Kirsten 12
Mohammad 35
Suhi 15
Namrat 10
Définition d'un en-tête de rapport
Tout va bien. Mais vous seriez intéressé à ajouter un en-tête à votre rapport. Cet en-tête sera imprimé en haut de chaque page. C'est très simple de le faire. En plus de définir un modèle, vous devrez définir un en-tête qui aura le même nom mais ajouté avec le mot-clé _TOP comme suit
format EMPLOYEE_TOP =
------------------------
Name Age
------------------------
.
Votre rapport ressemblera maintenant à
------------------------
Name Age
------------------------
Kirsten 12
Mohammad 35
Suhi 15
Namrat 10
Définition d'une pagination et du nombre de lignes sur une page
Qu'en est-il si votre rapport prend plus d'une page? Vous avez une solution pour cela. Utilisez $%
vairable avec en-tête comme suit
format EMPLOYEE_TOP =
------------------------
Name Age Page @<
------------------------ $%
.
Maintenant, votre sortie ressemblera à
------------------------
Name Age Page 1
------------------------
Kirsten 12
Mohammad 35
Suhi 15
Namrat 10
Vous pouvez définir le nombre de lignes par page en utilisant une variable spéciale $=
(ou $ FORMAT_LINES_PER_PAGE) Par défaut $ = sera de 60
Définition d'un pied de page de rapport
Il reste une dernière chose qui est le pied de page. Très similaire à l'en-tête, vous pouvez définir un pied de page et il sera écrit après chaque page. Ici, vous utiliserez le mot clé _BOTTOM au lieu de _TOP.
format EMPLOYEE_BOTTOM =
End of Page @<
$%
.
Cela vous donnera le résultat suivant
------------------------
Name Age Page 1
------------------------
Kirsten 12
Mohammad 35
Suhi 15
Namrat 10
End of Page 1
Pour un ensemble complet de variables liées au formatage, veuillez vous référer à la section Variables spéciales Perl .