OPEN |
Ouvrir |
|---|---|
Perl |
Syntaxe
| open filehandle |
| open filehandle, expression |
| open filehandle, expression, list |
Paramètres
| Nom | Description | |
|---|---|---|
| filehandle | Ce paramètre permet d'indiquer l'identificateur de fichier a utilisé pour le fichier. | |
| expression | Ce paramètre permet d'indiquer les options d'ouverture de fichier ainsi que le nom de fichier. Les options d'ouverture sont des caractères textes à ajouter avant le nom du fichier, voici la liste des valeurs les plus communes : | |
| Valeur | Description | |
| < | Cet option d'ouverture permet d'indiquer le mode en lecture. | |
| > | Cet option d'ouverture permet d'indiquer le mode en écriture (il crée un fichier s'il n'existe pas ou écrase le fichier s'il existe déjà). | |
| >> | Cet option d'ouverture permet d'indiquer le mode ajouter en écriture à la fin du fichier existant s'il existe ou crée un nouveau fichier s'il n'existe pas. | |
| list | Ce paramètre permet d'indiquer les options d'ouverture de fichier. | |
Description
Cette fonction permet d'ouvrir un fichier.
Remarques
- Fonction centrale en gestion de fichiers : La fonction open est indispensable en Perl pour effectuer toute opération de lecture ou d'écriture sur des fichiers. Sans ouverture préalable via open, aucune opération de lecture, d'écriture ou de traitement sur fichier n'est possible. Elle constitue donc une étape initiale incontournable dans la manipulation de fichiers.
- Plusieurs syntaxes selon les besoins : open supporte plusieurs formes, allant de la plus simple open FILE, "filename" à la plus sécurisée avec trois paramètres : open(my $fh, '<', $filename). L'utilisation de la forme à trois arguments est recommandée, car elle évite les erreurs d'interprétation dues à des noms de fichiers contenant des caractères spéciaux.
- Modes d'ouverture variés et explicites : Le paramètre d'ouverture peut être précédé de symboles comme <, >, ou >>, permettant respectivement de lire, écrire en mode écrasement, ou écrire en mode ajout. Ces symboles rendent le comportement du fichier clair, mais nécessitent attention : par exemple, > efface le contenu existant, ce qui peut être dangereux sans précaution.
- Utilisation des filehandles traditionnels ou lexicaux : Perl permet d'utiliser soit des filehandles globaux (comme FILE), soit des filehandles lexicaux via une variable scalaire (my $fh). Cette seconde approche est plus sûre et plus moderne, car elle limite la portée du handle, réduisant les risques de conflit et facilitant la gestion de ressources.
- Vérification obligatoire du succès : Il est essentiel de vérifier si open a réussi, en testant la valeur de retour ou en ajoutant or die "Erreur : $!". En effet, une ouverture peut échouer pour diverses raisons (fichier manquant, permission refusée, disque plein...), et ignorer cet échec peut conduire à des erreurs silencieuses et difficiles à déboguer.
- Utilisation avec des flux spéciaux : open ne sert pas uniquement à ouvrir des fichiers sur le disque. Elle peut également ouvrir des flux spéciaux comme des pipes vers des commandes système (open my $fh, "ls |") ou des références mémoire (open my $fh, '>', \$buffer). Cela en fait un outil puissant pour interagir avec le système ou manipuler des données sans passer par des fichiers physiques.
- Encodage et couches d'entrées/sorties avec open : À partir de Perl 5.8, il est possible d'indiquer l'encodage à utiliser lors de l'ouverture d'un fichier texte, via une couche comme :encoding(UTF-8). Cela permet de lire ou écrire des fichiers avec un encodage spécifique tout en conservant une interopérabilité correcte avec d'autres systèmes ou logiciels.
- Fermeture explicite recommandée : Même si Perl ferme automatiquement les fichiers en fin d'exécution, il est recommandé d'utiliser la fonction close après open pour libérer les ressources système dès que possible. Cela évite aussi les risques d'écriture incomplète ou d'accès concurrentiels, surtout dans des scripts traitant plusieurs fichiers à la fois.
Exemples
Voici un code source Perl effectuant l'écriture d'un message «Bonjour gladir.com» dans un fichier du nom de «bonjour.txt» dans le répertoire d'exécution :
L'exemple suivant, classique du langage Perl, permet de terminer le programme immédiatement, à l'aide de «die», s'il ne réussit pas a créer le fichier :
Voir également
Langage de programmation - Perl - Lecture d'un fichier texte séquentiel
Langage de programmation - Perl - Écriture d'un fichier texte séquentiel
Langage de programmation - Perl - Référence de procédures et fonctions - POSIX::open
Langage de programmation - C pour Linux - Référence de procédures et fonctions - open
Références
La Bible Micro Application HTML & Développement Web, Stefan Munz, Wolfgang Nefzger, 2003, ISBN: 2-7429-2898-7, page 1154
Perl/CGI-Programmation avancée Grand Livre, Edition Micro Application, Rolf D. Stoll, 2001, ISBN: 2742919082, page 192