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 :

[langage] Créé un hash dans un fichier...


Sujet :

Langage Perl

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2003
    Messages : 2
    Points : 1
    Points
    1
    Par défaut [langage] Créé un hash dans un fichier...
    J'essaye de formater un hash dans un fichier rempli manuellement et éventuellement par saisie d'un utilisateur.

    Je ne sais pas comment écrire mes clés vs l'attibut dans le fichier pour pouvoir le récupérer par la suite dans mon .pl

    Si quelqu'un peu me dépanner... je commence à apprendre le language...

  2. #2
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 572
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 572
    Points : 2 014
    Points
    2 014
    Par défaut
    Le mieux serait que tu nous donnes un exemple complet des données que tu veux écrire dans le fichier

    Il est comment, ton hash ? C'est un hash simple, juste composé d'associations clés/valeurs ou bien un hash de hash ou pire encore ?

    Selon certains cas de figure, tu pourrais peut être employer les fichiers DBM

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2003
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    C'est simplement un clé/valeur simple....
    ex.

    pkg1 => Bonjour comment ca va
    pkg2 => salut la suite
    ect...

    et c'est justement mon problème la création du fichier DB

  4. #4
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 572
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 572
    Points : 2 014
    Points
    2 014
    Par défaut
    Ok, alors voici un exemple de prog qui devrait fonctionne si, comme tu dis, ton hash est un hash simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    use strict;
    use AnyDBM_File;
     
    my %Hash;        # ton hash contenant les données
      $Hash{pkg1} = "Bonjour comment ca va";
      $Hash{pkg2} = "salut la suite";
    my %HashFic;    # pour la liaison avec ton(tes) fichier(s) DBM
     
    # pour CREER un fichier DBM "toto" :
    dbmopen(%HashFic, "toto", 0644) or die("oups, pb avec crea toto : $!");
    %HashFic = %Hash;
    dbmclose(%HashFic);
     
    # pour LIRE LES DONNEES d'un fichier DBM "toto" :
    dbmopen(%HashFic, "toto", 0644) or die("oups, pb avec recup toto : $!");
    %Hash = %HashFic;
    dbmclose(%HashFic);
    Voili voilou ! Mais tout ceci exige qq explications que je vais tâcher de donner

    #le "use AnyDBM_File;" permet à ton programme d'exploiter les fichiers DBM de tous formats.

    #la fonction dbmopen est assez simple et la syntaxe est strictement identique, que tu l'utilises pour ouvrir un fichier DBM existant ou bien pour en créer un. Pas de notion du genre ">" à mettre devant le nom du fichier pour indiquer une ouverture en mode création ou encore ">>" pour une ouverture en mode mise à jour. Le "0644" concerne les permissions du fichier auquel on accède. Même si tu es sous Windows, il te faut indiquer ce paramètre à la fonction dbmopen sinon elle risque de couiner

    #dans mes 2 exemples (création ou lecture d'un DBM), tu as vu que %HashFic, qui est un hash temporaire, sert de Handle pour le fichier DBM. En fait, lorsque la fonction dbmopen a fini son taf, %HashFic contient la totalité des données du fichier DBM, ça n'est ni + ni - que ton propre hash reconstitué.

    A NOTER : car très très important ...
    Tant que ton hash ne fait que contenir des clés renvoyant vers des valeurs scalaires (une chaine de caractères comme dans ton exemple, un nombre), tout ira bien avec les fichiers DBM, sauf si ton hash contient un certain nombre de clés/valeurs, disons 1000-1500. Là, le stockage des données dans un DBM craint un peu.
    Maintenant, si ton hash contient des clés qui renvoient vers un tableau, ou un hash ou que sais-je d'autre encore, le stockage dans un DBM = NIET ! Tant que ton programme ayant écrit ton gros hash tournera en mémoire, tu pourras accéder aux données stockées dans le fichier DBM. Mais dès lors que tu voudras accéder à ton fichier DBM ayant été créé en dehors du processus actuel, tu vas avoir de drôles de surprises : les clés de ton hash auront été stockées en gardant comme valeur l'adresse mémoire des hash de ces valeurs, ce qui signifie que ton fichier DBM est inutile et adieu les données qu'il contenait.

    Pour gérer des hash de hash, il vaut mieux utiliser la fonction TIE. Mais là, sorry, je n'en sais pas davantage sur Tie.[/list]

Discussions similaires

  1. [langage] Sauter une ligne en ecrivant dans un fichier
    Par mickey02 dans le forum Langage
    Réponses: 3
    Dernier message: 17/03/2005, 18h02
  2. [langage] Ecrire un bloc de texte dans un fichier
    Par sarahbes dans le forum Langage
    Réponses: 6
    Dernier message: 10/06/2004, 11h40
  3. Réponses: 2
    Dernier message: 11/03/2004, 15h20
  4. Réponses: 6
    Dernier message: 04/03/2004, 09h35
  5. [langage] Susbstitution dans un fichier
    Par GLDavid dans le forum Langage
    Réponses: 6
    Dernier message: 08/09/2003, 15h16

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