La gestion de fichiers en Perl 1. Principe Général
En Perl, la gestion de fichier est sur le même principe que pour les autres langages impératif (Pascal, Java...). 2. Fonctions utiles
Voici les fonctions utiles pour la gestion de fichiers en Perl :
3. Exemples de lecture de fichier
3. 1. Lecture d'une ligne
Voici un exemple de lecture du fichier test.txt qui se trouve dans le répertoire courant : open (RESU, "test.txt"); Cet exemple affiche la première ligne du fichier.$whole_line = <RESU> print "$whole_line"; close (RESU);
3. 2. Lecture de tout un fichier
3.2.1. Utilisation d'une boucle
Voici le même code légèrement modifier afin d'afficher tout le fichier : open (RESU, "test.txt"); En effet, la boucle "While" permet de lire chaque ligne, jusqu'à la fin du fichier. la commande de lecture de ligne du fichier
place automatiquement le "curseur" sur la ligne d'après. C'est-à-dire que si vous faites la commande "$whole_line = <RESU>" deux fois
de suite, vous récupérerez deux lignes différentes ! Si <RESU> est considérée comme une variable normale, dès qu'elle est lue,
cette variable prend la valeur de la ligne suivante.
while ($whole_line = <RESU>) { print "$whole_line"; } close (RESU); 3.2.2. Sans utilisation d'une boucle
open (RESU, "test.txt"); @Fichier = <RESU>; close (RESU); Ceci permet de lire tout le fichier et de le mettre dans le tableau "@Fichier". La gestion des tableaux en Perl n'est pas encore présente sur le site, mais j'espère bien le rajouter un jour. 3. 3. Lecture du fichier avec test
En effet, si vous essayer d'afficher un fichier qui n'existe pas, ce n'est pas top. Voici donc comment tester si le fichier existe ou non : if (-f "test.txt") { Vous remarquez que le code est très très compliqué !open (RESU, "test.txt"); while ($whole_line = <RESU>) { print "$whole_line"; } close (RESU); } En fait, la structure conditionnelle "if" regorge de petites astuces pour faciliter la vie. Ainsi, le "if (-f ...)" permet de tester très facilement l'existence d'un fichier. Pour plus d'informations sur le "if", patienter un peu, j'y travaille... 4. Exemples d'écriture de fichier
4. 1. Exemple d'écriture dans un fichier
Voici un exemple d'écriture dans le fichier test.txt qui se trouve dans le répertoire courant : open (NEWFICH, ">test.txt"); Ce code comporte bien sur des similitudes avec le code de lecture, mais attention au ">" comme vous allez le voir :print NEWFICH "ligne 1\r\n"; $test = "ligne 2\r\n"; print NEWFICH $test; close (NEWFICH);
4. 2. Exemple d'écriture dans un fichier
Pour ajouter du texte dans un fichier : open (NEWFICH, ">>test.txt"); La différence par rapport au code précédent réside dans le ">>" au lieu de ">". Cette différence permet d'ajouter du texte à la fin
du fichier au lieu de l'écraser s'il existe déjà.
print NEWFICH "ligne 1\r\n"; $test = "ligne 2\r\n"; print NEWFICH $test; close (NEWFICH); 4. 3. Exemple d'écriture directe dans un fichier
Voici un complément qui vous permet de voir comment saisir une ligne au clavier et qu'elle soit mise dans le fichier voulu : open (NEWFICH, ">test.txt"); print "Entrez la ligne à ajouter dans le fichier :\n"; $ligne_a_ecrire = <STDIN>; print NEWFICH $ligne_a_ecrire."\r\n"; close (NEWFICH); Ce code permet de faire saisir une ligne à l'utilisateur pour qu'elle soit ajouter dans le fichier. 5. Recherche de Fichier
Pour recherche des fichiers dans un répertoire (afin de renommer, ouvrir, effacer...), voici un exemple de code permettant de rechercher les fichiers d'un répertoire : #!/usr/bin/perl opendir(daemon,"/home/hobbesworld"); while ($supprfich = readdir(daemon)) { print $supprfich."\n"; } closedir(daemon); 6. Résultat de la fonction 'stat'
La fonction stat permet d'obtenir de nombreuses informations sur un fichier (taille, droits...). Mais, encore faut-il savoir l'utiliser. Ceci ne va donc pas être réellement une explication de l'utilisation de stats, mais plus précisement quel genre de résultats la fonction peut renvoyer. Voici donc un exemple de l'utilisation de stat : ($dev,$inode,$perm,$liens,$uid,$gid,$ndev,$lg,$acces,$mod,$cr,$blksize,$bl)=stat("test.txt"); Voici le retour d'un tel programme :print "dev = $dev\n"; print "inode = $inode\n"; print "perm = $perm\n"; print "liens = $liens\n"; print "uid = $uid\n"; print "gid = $gid\n"; print "ndev = $ndev\n"; print "lg = $lg\n"; print "acces = $acces\n"; print "mod = $mod\n"; print "cr = $cr\n"; print "blksize = $blksize\n"; print "bl = $bl\n";
|