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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 17
    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
    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 averti
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 17
    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