no
Des trucs à web ressources pour webmasters
Vendez - achetez du matériel informatique d'occasion où neuf   
   
      
  En partenariat avec amazon.fr
Langages
PHP
Perl
Html-Css
Javascript
Bdd (Mysql ...)
Forums
Ressources
Trucs,astuces
Mémos,tutoriaux
Outils-Logiciels
Scripts
 
Serveurs apache IIS
Sécurité
Référencement
Système exploitation
Informatique divers
Services
Générateur Metas
Testez vos Metas
Divers
Contacts
Signaler une erreur
Liste des scripts
Carte du site
Partenaires

Une question, un problème ? Venez en discuter sur le forum          Imprimer le document : Les fichiers en Perl
 

Les fichiers en Perl

 
 

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: leur 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 de 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.

© Copyright 2003 Jean-François Pillou.
Ce document issu de CommentCaMarche.net est soumis à la licence GNU FDL. Vous pouvez copier, modifier des copies de cette page tant que cette note apparaît clairement.


 
 

Une question, un problème ? Venez en discuter sur le forum 

Publicités

Accueil   Php   Perl   Html-Css   Javascript   Base de données   Serveurs Sécurité  Référencement
Systèmes d'exploitation   Informatique général  Forums - Webblog - Actus
www.destrucsaweb.com   -  © 2002-2006 Tous droits réservés Hervé Lafragette

Quand le débutant est conscient de ses besoins, il finit par être plus intelligent que le sage distrait. ( Lao-Tseu)





-



Partenaires : référencement site Internet sur Toulouse
[


Temps d'exécution : 0.23274898529053