IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Perl Discussion :

Lire un fichier Texte d'1 bloc dans une chaine


Sujet :

Langage Perl

  1. #1
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 336
    Points : 19 571
    Points
    19 571
    Billets dans le blog
    65
    Par défaut Lire un fichier Texte d'1 bloc dans une chaine
    Bonjour,

    Je débute en perl et j'aurais aimé savoir s'il est possible de lire la totalité de mon fichier texte dans une chaine de caractère:

    sans passer par une lecture ligne par ligne (je ne veux pas de while ($ligne = <fichier>)...)

    donc un truc du genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    open fichier, "< fichier1.txt"
     
    ...
     
    $chaine = texte_du_fichier

    c'est pour remplacer directement une occurence dans la variable $chaine (contenant le texte du fichier..) sans passer par une lecture ligne par ligne (trop fastidieux..)


    Merci par avance,

    Denis
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  2. #2
    Membre expert
    Avatar de 2Eurocents
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Points : 3 166
    Points
    3 166
    Par défaut
    par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $/="";
    open fichier, "< fichier.txt";
    $contenu=<fichier>;
    Selon perldoc perlvar, $/ est une variable - aussi nommée $RS - qui contient le séparateur d'enregistrement en entrée (ce qui distingue les lignes d'un fichier). Quand il est vide ou indéfini, le fichier est lu de façon intégrale (atomique )

    Selon la même perldoc perlvar, il existe une façon encore plus propre de faire ce que fait mon code ci-dessus :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    open fichier, "< fichier.txt";
    {
      local $/;  # active le mode "slurp"
      $contenu=<fichier>;
    }
    close fichier;
    Voila ... et ça donne l'explication pour ceux qui ne savent pas encore ce que c'est que de "slurper" un fichier.
    La FAQ Perl est par ici
    : La fonction "Rechercher", on aurait dû la nommer "Retrouver" - essayez et vous verrez pourquoi !

  3. #3
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 336
    Points : 19 571
    Points
    19 571
    Billets dans le blog
    65
    Par défaut
    1 grand merci à toi,

    Et si je veux écrire la totalité d'une chaine contenant des sauts de lignes dans un fichier texte, est-ce que je peux faire un truc du genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $/="";
    open fichier, "> fichier.txt";
    <fichier>=$contenu;

    merci encore,
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  4. #4
    Membre expert
    Avatar de 2Eurocents
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Points : 3 166
    Points
    3 166
    Par défaut
    Citation Envoyé par User
    Et si je veux écrire la totalité d'une chaine contenant des sauts de lignes dans un fichier texte, est-ce que je peux faire un truc du genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $/="";
    open fichier, "> fichier.txt";
    <fichier>=$contenu;


    Il ne faut pas changer la logique de l'écriture, et ceci suffit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    open fichier, "> fichier.txt";
    print fichier $contenu;
    (attention, il n'y a pas de virgule entre le handle de fichier et la chose à imprimer )
    La FAQ Perl est par ici
    : La fonction "Rechercher", on aurait dû la nommer "Retrouver" - essayez et vous verrez pourquoi !

  5. #5
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 336
    Points : 19 571
    Points
    19 571
    Billets dans le blog
    65
    Par défaut
    OK,

    je tag résolu pour cette aide précieuse:

    a bientôt peut-être !

    Denis
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    427
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 427
    Points : 459
    Points
    459
    Par défaut
    attention tout de meme: si $/ est modifié il l'est pour tout le script et pour tous les modules. Donc mieux vaut utiliser la deuxieme forme qu'a indiqué 2Eurocents, avec le local et le block, pour eviter tout probleme
    Recherche staigiaire(s) motivé(s) sur projet perl/reseau a grande echelle. Me contacter par mp.

  7. #7
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Citation Envoyé par 2Eurocents
    Quand il est vide ou indéfini, le fichier est lu de façon intégrale (atomique )
    Quand $/ eq "", la lecture se fait en mode paragraphe, c'est à dire que chaque lecture se fait jusqu'à une ligne vide (ou plusieurs lignes vides, c'est la différence avec $/ = "\n\n"), pour lire l'intégralité du fichier, il faut bien que $/ soit undef.
    Et je recommande effectivement chaudement l'idiôme avec le bloc et le local, ça évite de perturber tout le reste du programme... Sauf pour les plus petits programmes, la modification d'une variable globale devrait toujours se faire avec local de toute façon !

    --
    Jedaï

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 14
    Dernier message: 29/05/2010, 12h19
  2. Comment lire un fichier XML et l'écrire dans une variable XML en C#
    Par Bonne Année dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 21/01/2009, 13h34
  3. Réponses: 0
    Dernier message: 16/01/2009, 15h15
  4. Réponses: 5
    Dernier message: 21/02/2007, 16h12
  5. Réponses: 10
    Dernier message: 10/02/2007, 18h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo