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 :

Question de base sur les hash


Sujet :

Langage Perl

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 17
    Points : 16
    Points
    16
    Par défaut Question de base sur les hash
    Voici un petit programme que je tente de comprendre pour m'aider avec les hash (l'exemple est dans un livre)

    use strict;

    my (@words, %count, $word);

    chomp(@words = <STDIN>);

    foreach $word(@words){
    $count{$word} += 1;
    }

    foreach $word(keys %count) {
    print "$word was seen $count{$word}\n";
    }

    Lorsque je déclare mes variables %count est bien une déclaration pour un hash?

    Par la suite, pour le premier foreach j'utilise $count et non %count quelqu'un pourrait me dire pourquoi?

  2. #2
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 469
    Points
    12 469
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Oui, %count est bien une déclaration pour un hash.

    Si tu veux manipuler tout le hash (en tant que collection de paires clé-valeur) il faut utiliser le "sigil" %, de même qu'il faut utiliser le sigil @ pour manipuler le tableau @words.

    Mais lorsque tu veux accéder à une donnée individuelle d'un hash ou d'un tableau, alors il faut utiliser le sigil $ pour indiquer que tu va utiliser une valeur scalaire individuelle. Le fait d'utiliser les accolades {} pour un hash et les crochets [] pour un tableau rappelle la nature de la structure de données dans laquelle tu vas aller piocher ta valeur scalaire individuelle (et le dit à l'interpréteur perl). Exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    my %hash = (jan => 0, feb => 1, mar =>2, ...);
    my @array = qw / jan feb mar apr .../;
     
    print $hash{jan}; # imprime 0
    print $array[2]; # imprime mar (un tableau commence à l'indice 0)
    Mais si tu accèdes à plusieurs valeurs d'un seul coup, par exemple avec une "tranche de tableau" il faut utiliser le sigil correspondant un tableau, @. Par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    print "@array[0..2]"; # imprime "jan feb mar".
    print "@hash{jan, feb}"; # imprime "0 1"

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 17
    Points : 16
    Points
    16
    Par défaut
    Merci sa m'aide beaucoup. Je comprends mieux maintenant.

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

Discussions similaires

  1. question de base sur les transactions
    Par nouraty dans le forum Débuter
    Réponses: 3
    Dernier message: 22/12/2010, 21h51
  2. question de base sur les pointeurs
    Par Ganondorf dans le forum Débuter
    Réponses: 4
    Dernier message: 26/08/2010, 17h07
  3. question de base sur les classes
    Par tanguy.L dans le forum Langage
    Réponses: 10
    Dernier message: 28/02/2008, 17h37
  4. Réponses: 13
    Dernier message: 10/10/2007, 10h09
  5. Question de base sur les classes
    Par deaven dans le forum C++
    Réponses: 3
    Dernier message: 27/11/2005, 16h20

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