Flux rss

Perl - Les fichiers

 
Collection CommentCaMarche.net

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.
Ce document intitulé « Perl - Les fichiers » issu de 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.

Résultats pour Perl Les fichiers

[PERL]Fichier annexe... (Résolu) Re bonjour, et oui aujourd'hui je fais du PERL et c'est un peu la galère car j'en fait pas souvent... xD bref, ca fait ma pause repas que je galère a trouver comment que faire :P je m'explique : #J'ai un fichier A.txt qui... www.commentcamarche.net/forum/affich-1871503-perl-fichier-annexe
Perl fichiers (Résolu) Bonjour, jaimerai prednre les données d'un fichier et les recopier dans un nouveaux fichier. Je debute en perl, jarrive a ouvrir le fichier créer le nouveua mais je narrive pas a recopier les données. merci www.commentcamarche.net/forum/affich-4868008-perl-fichiers
[PERL] lire contenu fichier .xls (Résolu) bonjour, voila je commence a apprendre le language PERL et j'aimerais savoir si il existe une commande ou un moyen de pourvoir lire le contenu d un fichier .xls et de le stocker dans une base de données ORACLE ??? Si oui quelles seraient les... www.commentcamarche.net/forum/affich-1498882-perl-lire-contenu-fichier-xls

Résultats pour Perl Les fichiers

Robots.txt, un fichier importantSur votre site : le fichier robots.txt Sur votre site , vous essayez, dans la mesure du possible, de faire en sorte que vos pages soient indexées au mieux par les robots (spiders) des moteurs de recherche. Mais il peut également arriver que... www.commentcamarche.net/faq/sujet-10609-robots-txt-un-fichier-important

Résultats pour Perl Les fichiers

[PERL] Ecrire dans un fichier (Résolu)Bonjour tout le monde, je programme en perl et j'ai besoin de modifier des paramètres dans un fichier automatiquement. voici un extrait du fichier : n 108 m 56 s 2 t 4 a 1 2 1 j'ai besoin d'accéder aux lignes 3 et 4 et de changer 2 et 4... www.commentcamarche.net/forum/affich-1524434-perl-ecrire-dans-un-fichier
[PERL]- Extraire lignes d'un fichier à partir (Résolu)Bonjour, je suis nouveau sur ce forum et je dois pour mon stage extraire les "nb" derinères lignes d'un fichier, les trier et les mettre dans un autre fichier. En gros je voudrais faire cela en perl: tail -$nb $fichier | sort -k 5 -u | sed -e... www.commentcamarche.net/forum/affich-5845343-perl-extraire-lignes-d-un-fichier-a-partir
[PERL] Telecharger config cisco (Résolu)Bonjour ! Je cherche en ce moment à telecharger les fichiers de configuration d'un routeur cisco par le biais d'un script perl et d'un serveur tftp. Le pc et le routeur sont reliés en Ethernet. Voici mon script actuellement (je découvre... www.commentcamarche.net/forum/affich-2783903-perl-telecharger-config-cisco

Résultats pour Perl Les fichiers

Perl - Caractéristiques du langageFichier source, et interprétation Le fichier source d'un programme écrit en Perl est un simple fichier texte dont l'extension est par convention .pl. Ce fichier source doit être un fichier texte non formatté, c'est-à-dire un fichier texte dans sa... www.commentcamarche.net/contents/perl/perlcarac.php3
Perl - IntroductionHistoire de Perl Perl (Practical Extraction and Report Language) est un langage de programmation dérivé des scripts shell, créé en 1986 par Larry Wall afin de mettre au point un système de News entre deux réseaux. Il s'agit d'un langage interprété... www.commentcamarche.net/contents/perl/perlintro.php3
Les variables avec PerlConcept de variable avec Perl Une variable est un objet repéré par son nom, pouvant contenir des données, qui pourront être modifiées lors de l'exécution du programme. Les variables en langage Perl peuvent être de trois... www.commentcamarche.net/contents/perl/perlvar.php3