01 juillet 2004

Programmation PERL

Fichiers en PERL

- donner le nom du fichier à ouvrir,
- ouvrir le fichier,
- stocker dans un tableau les données,
- afficher le contenu et fermer le fichier.
Plus tard, on rajoutera quelques tests car là c'est très rudimentaire.

//on peut récupérer le nom du fichier en entrée : $nom_fichier =  <stdin>;
$nom_fichier = « mail.txt » ;
//FIC_MAIL est un descripteur de fichiers
//open est un appel système
open (FIC_MAIL,$nom_fichier) ;
//< et > sont des opérateurs d'entrée
@mail =<fic_mail>;
close FIC_MAIL ;
 

Tester l'ouverture du fichier avec "unless" (à moins que la condition ne soit vraie) :

unless (open (FIC_MAIL, $nom_fichier)
{ print "Impossible d'ouvrir le fichier $nom_fichier! "; exit; }

C'est un test basique néanmoins indispensable.

Expressions régulières

1. Rechercher de motifs avec l'opérateur de liaison =~

Avant de vous expliquer la marche à suivre, sachez qu'il y a une certain nombre de codes à respecter :
-
 Répétition, astérisque * placé derrière un caractère signifie que ce caractère peut être présent 0 ou n fois. Ex en bio : CTCG* correspond à CTC ou CTCG ou CTCGG…

- Alternative : a|b signifie a ou b
-
 Concaténation : ab signifie a suivi de b (simple non ?)
On récapitule ce qu'on vient de voir :
(CTA|CTC)A*G = CTA ou CTC suivi de 0 ou plusieurs A suivi d'un G.


Repérer une ligne vide :

$var =~ /^s*$/ ;

^ représente le début de la ligne, s* : 0 ou plusieurs espaces et $ pour fin de ligne.

Remplacer n'importe quel caractère d'espacement par rien :

$var =~s /s//g ; 

Rechercher un motif précis $motif dans une variable $variable consiste à tester si cette instruction est vraie (avec un if par exemple) :

$variable =~ /$motif/ig ;

On a rajouté l'option i pour notifier que ce qu'on recherche peut être une minuscule ou une majuscule.

2. Substituer des caractères avec l'opérateur de substitution : =~ s

Syntaxe : $variable = ~ s /char1/char2/g ;

=> rechercher au sein de la variable $variable le caractère Char1 et le remplacer par Char2 partout (option g)
Liste de modificateurs de motifs présents après le dernier slash /:
g : recherche globale
i : insensible à la casse
x : autorise les commentaires à l'intérieur des motifs
o : ne compile le motif qu'une seule fois


On veut supprimer tous les ^ ou < ou > présents dans de nombreux mails :
$var =~ s/[^<>]//g ;

Sans le savoir on a défini une classe de caractères en mettant les éléments recherchés entre crochets.

Posté par fatihaelh à 22:08 - PERL - Commentaires [0] - Permalien [#]

Commentaires

Poster un commentaire