mardi 15 octobre 2013

Perl, manipulation des fichiers texte et du contenu.


Hé hé hé !!!

L'utilisation de Perl est justifiée par la faible quantité de données de nos corpus alliée à la simplicité syntaxique de Perl travailler sur les données textuelles.

Il ne s'agit pas ici d'un tutorial Perl général, plutôt l'utilisation de Perl dédiée à notre projet.


Entrées/Sorties Fichier Texte

Débutons par les entrées/sorties fichier avec Perl. Nous allons travailler sur des fichiers textes, donc voici la manipulation de ceux-ci via Perl.


OUVRIR LE FICHIER TEXTE POUR ACCÉDER À SON CONTENU

- ouverture en interne, fichier à traiter indiqué à l'intérieur du script.





° Fonction open() : premier argument, nom du flux à ouvrir et
second argument, chemin vers le fichier texte. Retourne un flux vers le fichier.

 Pour écrire dans le fichier, ouvrir EN ÉCRITURE, indiquer ">" devant le fichier.

° Utiliser alors la fonction print FLUX string pour écrire avec ce même flux.


- ouverture externe, fichier  à traiter indiqué en argument du script

° On utilise l'opérateur diamant <> pour récupérer l'argument en entrée

while ($ligne = <>) { --> exemple d'utilisation dans une boucle "while", lecture ligne par ligne. Chaque ligne est ici enregfistrée dans la variable $ligne ; donc une nouvelle ligne à chaque tour de boucle.
La boucle s'arrête lorsqu'il n'y a plus rien à lire.

Deux variables magiques : $_ est la valeur de la ligne courant et $. est le numéro de la ligne courante.


° Aussi, conventionnellement est défini @_ qui contient la liste des arguments. $_[] permet d'accéder à un élément de cette liste.

Par exemple, $_[0] est le premier élément donné en argument.







L'ouverture permet d'atteindre le contenu texte de notre fichier.
Ce qui nous intérèsse c'est la manière dont on va traiter ce contenu textuel, voici les fonctions usuelles et utiles à cet égard.


TRAITEMENT DU CONTENU TEXTUEL


° Fonction split() : premier argument, expression régulière notée entre // permettant de définir la délimitation, second argument chaîne de caractères à découper.

Exemple

$cible = "Un Deux Trois Quatre";
@table = split(/ /g,$cible);

Ici on récupère le tableau table les différentes séquences issues du découpage de cible avec l'espace pour délimiteur. Retourne la liste de séquences si affectation à une liste @ ou le nombre de séquences si affectation à un scalaire $.

Ainsi, on obtient :

$table[0] : "Un"
$table[1] : "Deux"
etc.

° Concaténation de deux chaînes de caractères avec l'opérateur .

Exemple

$a = "moi"
$b = "je"
$a . $c -> "moi je"

° opérateur répétition x

Exemple "a" x 3 -> "aaa"

° Majusculer up() et minusculer lc() : texte à modifier en argument.

° Fonction index() vérifie si une chaîne de caractères est contenue dans une autres ; premier argument, la sous-chaîne et second argument, la chaîne.
Renvoie -1 si faux, 0 si vrai.

Permettra notamment de compter le nombre d'ouccurences d'une certaine expression d'un texte.


° Fonction length() permet de donner la taille d'une chaîne de cacaractères.
Un argument : une chaîne de caractères. Renvoie l'entier correspondant à la taille.



FERMETURE FICHIER

Après avoir traité les données, penser à fermer le flux ouvert précédemment.

° Fonction close() : un argument, le nom du flux donné dans open(). <> si ouverture externe, via entrée standard.


Nous verrons dans le prochain article un peu plus profondémment l'utilisation des expressions régulières.




Kévin Deturck











Aucun commentaire:

Enregistrer un commentaire