On appelle filehandle (Traduisez descripteur de fichier) dans un programme Perl le nom permettant de manipuler une connexion dentréesortie (Les entréessorties standards vues précédemment sont connues par les filehandles STDIN et STDOUT). Les fichiers étant des entréessorties sont manipulés sous Perl à laide dun nom : Le filehandle !
Les descripteurs de fichiers sous Perl portent des noms nonprécédés dun caractère spécial. Ainsi il est conseillé (Voire fortement recommandé) de nommer les descripteurs de fichiers à laide de noms en majuscules afin de réduire au maximum le risque dutiliser un mot clé du langage réservé pour une utilisation future.
Pour pouvoir être utilisé un descripteur de fichier doit dans un premier temps être ouvert à laide de la fonction open() puis fermé (À laide de la fonction close()) lorsque son utilisation nest plus nécessaire afin de libérer la ressource.
La syntaxe pour ouvrir un fichier est la suivante :
Ce qui donnera par exemple :
Lorsque le nom du fichier nest précédé daucun signe particulier il sagit dune ouverture en lecture seule.
Lorsque le nom du fichier est précédé du signe supérieur › il sagit dune création de fichier ou dun écrasement de fichier (Si le fichier existe déjà).
Lorsque le nom du fichier est précédé du double signe supérieur ›› il sagit dune ouverture en ajout.
La fonction open() retourne une valeur indiquant la réussite (True) ou léchec (False) de louverture du fichier.
La fonction close() admet comme unique argument le descripteur de fichier :
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 dinterrompre lexé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 lexécution du programme et dafficher un éventuel message derreur sur la sortie standard (Lécran). La fonction die sutilise de la façon suivante :
Par cette écriture il faut comprendre "Ouvre ce fichier sinon meurt et affiche le message suivant...".
Dès quun 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 chaîne qui suit la fonction print() (Ou bien une variable contenant une partie de la chaîne...) :
Cela est en réalité équivalent à la ligne suivante car STDOUT est le descripteur de fichiers par défaut de la fonction print() :
Ainsi lorsquun 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 (Cestàdire STDOUT) par le descripteur du fichier :
Le script cidessus effectue en faite une copie de fichier ligne par ligne du fichier lire.txt vers le fichier ecrire.txt.
Ce document intitulé « Perl Les fichiers » issu de Comment Ça Marche (http://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.