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 :

delete keys from Hash


Sujet :

Langage Perl

  1. #1
    Futur Membre du Club
    Inscrit en
    Novembre 2003
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 5
    Points : 5
    Points
    5
    Par défaut delete keys from Hash
    Bonjour,

    Je n arrive pas a supprimer definitivement une cle et sa valeur d un hash. Voici un exemple:
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    %hash=();
    $hash{1}{4}=10;
    $hash{1}{6}=4;
    $hash{4}{4}=2;
    $hash{2}{9}=10;
    $hash{2}{4}=2;
     
    print "size of hash".keys(%hash)."\n";
    foreach $key1 (keys %hash)
    {
    	foreach $key2 (keys %{$hash{$key1}})
    	{
    		print "$key1 and $key2 have the son $hash{$key1}{$key2}\n";
    	}
    }
    delete $hash{1}{4};
    delete $hash{1}{6};
    delete $hash{4}{4};
    print "size of hash".values(%hash)."\n";
    $count =0;
    foreach $key1 (keys %hash)
    {
    	foreach $key2 (keys %{$hash{$key1}})
    	{
    		if( exists($hash{$key1}{$key2}) ) {$count++;}
    		print "$key1 and $key2 have the son $hash{$key1}{$key2}\n";
    	}
    }
    print "counter: $count\n";
    et le resultat:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    size of hash3
    4 and 4 have the son 2
    1 and 6 have the son 4
    1 and 4 have the son 10
    2 and 4 have the son 2
    2 and 9 have the son 10
    size of hash3
    2 and 4 have the son 2
    2 and 9 have the son 10
    counter: 2
    Donc il supprime bien la valeur, mais ne me supprime pas la cle... Est ce qu il y a une solution plus propre que ce compteur. (j aurais bien aime utiliser la taille du hash directement en fait..).

    Merciiii

  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
    C'est tout à fait normal !

    Tu ne supprime pas tes valeurs (et leur clefs) dans le hachage %hash, mais dans un hachage anonyme haché dans %hash.

    Lorsque tu fais un delete ($hash{4}{4}), $hash{4} reste défini et vaut {} (un hachage vide).

    Il te faut donc le supprimer aussi, au besoin avec un truc du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    delete ($hash{4}{4});
    delete ($hash{4}) if (not (keys ($hash{4})));
    (Attention, non testé ...)
    La FAQ Perl est par ici
    : La fonction "Rechercher", on aurait dû la nommer "Retrouver" - essayez et vous verrez pourquoi !

  3. #3
    Futur Membre du Club
    Inscrit en
    Novembre 2003
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par 2Eurocents
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    delete ($hash{4}{4});
    delete ($hash{4}) if (not (keys ($hash{4})));
    (Attention, non testé ...)
    Ca marche tres bien. Juste a remplacer.

    Merciiii beaucoup

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

Discussions similaires

  1. Delete * From * Where ?!
    Par gui38 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 21/12/2006, 10h51
  2. Delete From In Select
    Par licorne dans le forum Requêtes
    Réponses: 4
    Dernier message: 06/10/2006, 13h13
  3. delete et foreign key
    Par babarincairo dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 24/04/2006, 19h03
  4. DELETE FROM t where t.id IN (SELECT id FROM t....)
    Par davcha dans le forum Langage SQL
    Réponses: 4
    Dernier message: 05/01/2006, 15h19
  5. delete from
    Par Isildur dans le forum SQL
    Réponses: 46
    Dernier message: 13/05/2004, 10h50

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