Comment Ca Marche - Communauté informatique  
   
Accueil - Encyclopédie informatiqueTélécharger l'encyclopédieContribuer à cet article

Perl - Les fichiers

Perl - Les fichiers Encyclopédie


La notion de filehandle

On appelle filehandle (traduisez descripteur de fichier), dans un programme Perl, le nom permettant de manipuler une connexion d'entrée-sortie (les entrées-sorties standards vues précédemment sont connues par les filehandles STDIN et STDOUT). Les fichiers, étant des entrées-sorties, sont manipulés sous Perl à l'aide d'un nom : le filehandle !

Les descripteurs de fichiers sous Perl portent des noms non-précédés d'un caractère spécial. Ainsi, il est conseillé (voire fortement recommandé de nommer les descripteurs de fichiers à l'aide de noms en majuscules afin de réduire au maximum le risque d'utiliser un mot clé du langage réservé pour une utilisation future.

Ouverture et fermeture de fichiers

Pour pouvoir être utilisé, un descripteur de fichier doit dans un premier temps être ouvert, à l'aide de la fonction open(), puis fermé (à l'aide de la fonction close()) lorsque son utilisation n'est plus nécessaire, afin de libérer la ressource).
La syntaxe pour ouvrir un fichier est la suivante :

open(FILEHANDLER,"nom_de_la_ressource");
Ce qui donnera par exemple :
open(FILE,">toto.txt");

  • Lorsque le nom du fichier n'est précédé d'aucun signe particulier il s'agit d'une ouverture en lecture seule.
  • Lorsque le nom du fichier est précédé du signe supérieur > il s'agit d'une création de fichier.
  • Lorsque le nom du fichier est précédé du double signe supérieur >> il s'agit d'une ouverture en écriture.

La fonction open() retourne une valeur indiquant la réussite (true) ou l'échec (false) de l'ouverture du fichier.

La fonction close() admet comme unique argument le descripteur de fichier :

close(FILEHANDLER);

La gestion des erreurs d'ouverture

Lorsque la fonction open() ne parvient pas à ouvrir un fichier pour une quelconque raison (fichier inexistant, fichier déjà ouvert en écriture), il est parfois nécessaire d'interrompre l'exécution du programme pour éviter de dangereuses erreurs en cascade. Pour cela Perl fournit un outil très pratique: la fonction die, permettant de terminer l'exécution du programme et afficher un éventuel message d'erreur sur la sortie standard (l'écran). La fonction die s'utilise de la façon suivante :

open(TOTO,">toto.txt") ¦¦ die ("Erreur d'ouverture de TOTO") ;
Par cette écriture il faut comprendre "Ouvre ce fichier sinon meurt et affiche le message suivant...".

Lecture et écriture de fichiers

Dès qu'un fichier est ouvert, il est possible de lire son contenu ligne par ligne grâce à la fonction print(). Pour cela, il suffit de placer la variable $_ dans la chaine qui suit la fonction print() (ou bien une variable contenant une partie de la chaine...) :

open(TOTO,"toto.txt") ¦¦ die ("Erreur d'ouverture de TOTO") ;

while (<TOTO>) {
print "la ligne $_ a ete lue\n";

}

close(TOTO);

Cela est en réalité équivalent à la ligne suivante car STDOUT est le descripteur de fichiers par défaut de la fonction print() :

open(TOTO,"toto.txt") ¦¦ die ("Erreur d'ouverture de TOTO") ;

while () {
print STDOUT "la ligne $_ a ete lue\n";

}

close(TOTO);
Ainsi, lorsqu'un fichier est ouvert en écriture (lorsque son nom est précédé du caractère > dans la fonction open()) il suffit de remplacer la destination du print (c'est-à-dire STDOUT) par le descripteur du fichier :
open(LIRE,"lire.txt") ¦¦ die ("Erreur d'ouverture de LIRE") ;

open(ECRIRE,">ecrire.txt") ¦¦ die ("Erreur de creation de TOTO") ;

while () {
print ECRIRE $_;

}

close(LIRE);

close(ECRIRE);
Le script ci-dessus effectue en faite une copie de fichier ligne par ligne du fichier lire.txt vers le fichier ecrire.txt.

Trucs & astuces pertinents trouvés dans la base de connaissances

18/02 19h13 Rédiger un fichier pour "Base de connaissance" (CommentçaMarche)
18/02 12h39 Afficher les extensions et les fichiers cachés (Windows XP)
01/02 11h19 réunir plusieurs fichiers pdf (Acrobat)
27/01 18h36 Comment lire un fichier ligne par ligne (Bash)
24/01 11h56 Fichiers “Thumbs.db” et vignettes (Windows XP)
23/01 15h32 Vider le cache Internet (Internet)
23/01 15h30 Accéder à ses fichiers depuis n'importe où (Internet)
23/01 15h23 Comment créer un fichier PPS ? (Bureautique)
23/01 14h42 Envoyer des fichiers volumineux par mail (Téléchargement)
13/01 00h04 Envoyer de gros fichiers (pièces jointes) par mail (Messagerie électronique)
Perl Fichiers Plus d'astuces sur « Perl Fichiers »

Discussions pertinentes trouvées dans le forum

13/01 12h17 komen tableau fichier perl Komen faire un tableau d'un fichier en Perl? Développement 26/01 22h51->karinn22
06/05 14h45 perl lire contenu fichier .xls [PERL] lire contenu fichier .xls Développement 25/05 10h23->kij_8221
27/11 20h29 extraire contenu fichier perl extraire le contenu d'un fichier avec perl Développement 28/11 14h14->lami20j20
18/11 16h17 perl lire fichier son Perl lire un fichier son Développement 04/02 15h59->mail_pops3
24/10 14h10 perl fichier annexe [PERL]Fichier annexe... Développement 25/10 13h55->Zep3k!GnO3
12/12 22h40 sed perl supprimer lignes fichier (sed/Perl) supprimer des lignes d'un fichier Développement 13/12 18h46->lami20j2
27/06 11h13 perl ouverture fichiers [PERL] ouverture fichiers Linux/Unix 27/06 11h53->yoann_tux1
19/09 00h49 perl extraire donnees fichier. [PERL] Extraire des donnees d'un fichier. Linux/Unix 22/09 17h27->lami20j20
23/01 21h01 perl lecture fichier csv [Perl] souci lecture fichier csv Linux/Unix 01/02 14h34->Vince179
03/08 13h22 perl lecture ecriture fichier Perl: lecture et ecriture ds 1 fichier Développement 08/08 01h44->mamiemando7
Discussion fermée Problème résolu Perl Fichiers Plus de discussions sur « Perl Fichiers »

Ce document intitulé « Perl - Les fichiers » issu de l'encyclopédie informatique Comment Ça Marche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.