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
   .

FormatNamerepré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.

fieldlinepeut 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 .