Manipulation de fichiers


Voice un programe basique en Perl, qui fait la même chose que la commande UNIX cat sur un fichier.

#!/usr/local/bin/perl
#
# Programme qui ouvre le fichier de mots de passe, le lit,
# l'affiche, et le referme
 
$file = '/etc/passwd';		# Nom du fichier
open(INFO, $file);		# Ouvre le fichier
@lines = <INFO>;		# Lit le fichier, et le met dans un tableau
close(INFO);			# Ferme le fichier
print @lines;			# Affiche le fichier
 

La fonction open, ouvre un fichier en entrée (cad pour le lire). Le premier paramètre est le pointeur de fichier, qui permet de faire des références ultérieures au fichier. Le deuxième paramètre est un expression qui donne l'accès au fichier. Si le nom du fichier avait été donné entre apostrophe double, il aurait été utilisé litéralement. Alors que mis entre apostrophes simples, il est interprété par le shell. Pour forcer l'interprétation, utilisez les apostrophes simples.

La fonction close fait fermer le fichier par le Perl.

Il y a point à préciser à propos des fichiers. Premièrement, la fonction open peut aussi spécifier le type d'accès : lecture, ajout, écriture. Pour cela, on préfixe le nom du fichier par > pour l'ecriture, par >> pour l'ajout et par < pour la lecture.

open(INFO, $file);	# Ouvre en lecture/écriture
open(INFO, ">$file");	# Ouvre en écriture
open(INFO, ">>$file");	# Ouvre en ajout
open(INFO, "<$file");	# Ouvre en lecture
 

Deuxièmement, si vous désirez écrire quelquechose dans un fichier que vous avez déjà ouvert en écriture, vous pouvez utiliser la fonction print avec un paramètre en plus. Pour écrire une chaîne dans un fichier avec le pointeur de fichier INFO, on a :

print INFO "Cette ligne va dans le fichier.\n";
 

Troisièmement, on peut utiliser les expressions suivantes pour ouvrir le fichier d'entrée par défaut, ( généralement le claiver), ou pour le fichier de sortie par défaut, (généralement l'ecran), grâce aux expressions suivantes :

open(INFO, '-');	# Ouvre le fichier d'entrée
open(INFO, '>-');	# Ouvre le fichier de sortie
 

Dans le programme ci dessus, les informations sont lu à partir d'un fichier. Le fichier est le fichier INFO, et pour lire dans un fichier, en Perl, on utilise les signes < et >. Notamment,

@lignes = <INFO>;
 

lis le fichier désigné par son pointeur, et l'enregistre dans le tableau @lignes. Remarquez que l'expression <INFO> lit tout le fichier en une seule passe. Ceci à cause du contexte de tableau de valeur. Si @lignes etait remplacé par une vairiable, $lignes aurait été affecté par la ligne en cours. Dans les deux cas, une ligne complete est stockée, notamment avec un retour chariot à la fin.


Exercice

Modifiez le programme ci-dessus pour que le fichier complet soit affiché avec un "#" au début de chaque ligne. Vous avez juste une seule ligne à ajouter, et un à modifier. Utiiliser la variable $". Des choses surprenantes peuvent arriver lorsqu'on manipule les fichiers : n'hésitez pas à utilisez la commande -w, comme précisé dans exécution des programmes en Perl.


Precedent Start Suivant