TP Langage Perl

Serge gadret

Ce tp sera constitue d'une suite de petits exercices, qui dans la mesure du possible suivra le plan du cours. Bien entendu il sera parfois nécessaire d'anticiper sur les chapitres suivants pour réaliser l'exercice courant.
Vous trouverez tous les fichiers données ou à compléter dans:
~gadret/public_html/TP_PERL/exos
et les corrigés sont dans:
~dax/public_html/tp_perl/exos/corrige

I- Appel de Perl

A l'aide du transparent Execution d'un programme perl et en utilisant l'instruction print, faire appel à l'interpréteur perl de 3 manières suivantes:

II-Variables

I-1 Scalaires

Le langage perl est non typé, mais on peut utiliser les différentes bases décimale, octale et hexadécimale
La fonction "printf" est identique au langage C.
Donner sur la première ligne de "type_scal_ac.pl" le bon chemin d'accès au programme perl, puis compléter ce fichier en remplacemant les "..." On décommentera les lignes au fur et à mesure.

I-2 Chaine de caractères

Afin de manipuler les simples quotes ', les doubles quotes " " et l'anti slash \, voir l'exercice " chaine_ac.pl"

I-3 Tableaux

En utilisant le fichier "tableau_ac.pl"", dont on décommentera comme précédemment les lignes, réaliser les opérations suivantes: Définir les tableaux suivants:
On affichera :
Accéder au dernier élément de "alphabet" sans utiliser son indice, de deux manières différentes.
Afficher l'indice de ce dernier élément, ainsi que la longueur du tableau.
Affecter un tableau à un autre tableau
Définir un nouveau tableau "alphanum" constitue des tableaux "alphabet" "chiffres" ainsi que du caractère souligné "_" On obtiendra à l'affichage la liste suivante:
('a','b,',...,'z','_','1','2','3','4','5','6','7','8','9','0' )

I-4 Tableaux de dimension 2 ou 3

voir les fichiers tab_n2.pl et tab_n3.pl

I-5 Tableaux associatifs

Définir un tableau de nom "machine" dont les clefs seront: Afficher les caractéristiques de la machine.
Voir le fichier "tab_associa_2.pl", il s'agit d'un tableau associatif dont les clefs sont des noms de machine, et chaque élément étant un tableau composé des caractéristiques de la machine.
Afficher quelques caractéristiques de quelques machines au choix.

II-Opérateurs et Instructions

En utilisant l'opérateur "." construire les chaines suivantes à partir de 2 chaines différentes:
En utilisant l'opérateur duplicateur de chaine "x", afficher plusieurs fois une meme chaine :
OK! => OK!OK!OK!
Vous trouverez une solution dans ch_oper.pl
En cas de chaine constituée d'une variable et d'une chaine, utiliser le "{}"
Compléter le fichier ch_concat_ac.pl
Evaluer les 2 expressions suivantes, vérifier avec "parenth.pl" Voici une suite de questions dont on pourra vérifier l'exactitude des réponses en éxécutant "operateur.pl"
$ch1='a'; $ch2='b'; Compléter le fichier "while_ac.pl" qui affiche la variable I de 1 a 5, avec les 3 boucles:
Refaire l'exercice ci-dessus en utilisant le "foreach" (corrigé dans foreach.pl)
Modifier pour afficher des valeurs entre 3 et 9, en ne désignant que les bornes
Voir avec le fichier "next_last_redo.pl" l'utilisation des instructions de controle de boucle.

III-Fonctions

On definira les 2 variables suivantes:
$ch='param'; @tab=(1, 2, 3, 4);
Faire deux appel à une fonction "proc" on lui passera uniquement $ch lors du premier appel, puis $ch et @tab lors du deuxième appel.
La fonction récupérera les paramètres on les affichera, ainsi que leur nombre, que l'on retournera à la fonction appelante dans le cas du premier appel, dans le second appel, modifier le tableau en incrémentant les éléments de un, puis retourner le nouveau tableau; Corrigé dans appel_fonct.pl

IV-Fichiers

En utilisant les opérateurs de test sur les fichiers (cours:Fichiers I) afficher uniquement les fichiers du répertoire "exos". Utiliser l'instruction "foreach" et la fonction "glob" (cours:Fichiers X) pour générer la liste complète des références.
Corrigé dans oper_fic.pl

Vous disposez du fichier texte "toto.text", lister ce fichier ligne par ligne en affichant le numéro de ligne "$."(Fichiers X), puis écrire ces lignes dans un nouveau fichier "ecrit.txt", on pourra gérer les erreurs d'ouverture ou fermeture sur un fichier avec la fonction "die" (Fichiers VI). Utiliser le programme "tst_open_ac.pl".

V-Expressions regulieres

Le fichier "desordre" est un exemple de fichier passwd, mais ou se sont introduites des lignes blanches, ainsi que des blancs avant ou après le délimiteur de champ " : ".
Ecrire un programme qui comptera:
On affichera ces lignes, sauf les lignes vides.
Corrigé dans tri_desordre.pl

Dans un deuxieme temps on ecrira un programme permettant de remettre en ordre le fichier désordre, en fait supprimer les lignes vides, ainsi que les blancs autour du séparateur. Enfin modifier le shell de login /usr/csh par /usr/enstsh
Corrigé dans ordre.pl

Soit la chaine suivante: /dev/dsk/c0t3d0s
La modifier en : /dev/rdsk/c0t3d0s0
Dans la partie droite de la substitution on ne retapera pas le motif en entier, utiliser le motif désigné dans la partie gauche et correspondant à la variable "$&"
Corrigé dans modif_chaine.pl

Réutiliser le fichier remis en forme précédemment, écrire un programme permettant d'extraire les champs 1, 4, 5.
Utiliser la fonction "split"
split ( 'separateur' , "texte" );
La fonction split retourne une liste que l'on affectera à un tableau.
Afficher le nombre total de lignes.
Corrigé dans passwd.pl