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 :

Accéder à une valeur d'un tableau associatif


Sujet :

Langage Perl

  1. #1
    Membre du Club
    Inscrit en
    Juin 2004
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 79
    Points : 46
    Points
    46
    Par défaut Accéder à une valeur d'un tableau associatif
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    print "mac: ".$mac;
    print "couple:".$couple{"00-14-6a-b7-1b-a9"};
    print "res:".$couple{'$mac'};
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Et ca donne :
    mac: 00-14-6a-b7-1b-a9 
    couple:126.241.72.141
    res:

    La ligne
    print "res:".$couple{'$mac'};
    ne fonctionne pas...ca doit être trop trop bête mais là, je ne vois pas...
    Help..

    EDIT :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print "res:".$couple{$mac};
    non plus..

  2. #2
    Membre chevronné
    Avatar de Woufeil
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    1 076
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 1 076
    Points : 2 004
    Points
    2 004
    Par défaut
    Salut salut !

    Essaye :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print "res:".$couple{"$mac"};
    Ca devrais fonctionner.

    Petit rappel : les quillements simples ' ne sont pas interpolatifs, contrairement aux guillemets doubles ". Ainsi, '$mac' représente pour perl la chaîne 'mac' précédé du symbole $, et non pas le contenu de la variable $mac.

    Pour éviter ce genre d'erreurs, utilise le pragma strict (use strict; en début de programme) qui te préviendra si il rencontre une variable non initialisée avec my.
    Tu te serais aperçu de ton erreur avec ça
    "En essayant continuellement, on finit par réussir. Donc : plus ça rate, plus on a de chances que ça marche" (devise Shadock)
    Application :

    ainsi qu'à regarder la avant de poser une question.

    La rubrique Perl recrute, contactez-moi.

  3. #3
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771
    Par défaut
    Le souci n'est pas les double cote. Du moment où tu met $mac (sans les simple cote comme expliqué ci dessus par woulefil), pas besoin de double cote, même si c'est aussi ok.
    Le souci vient du point de concatenation.
    ecrit ainsi,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print "res:",$couple{$mac};
    Tu fais un print donc utilise une virgule pour concatener l'impression et non un point.

  4. #4
    Membre chevronné
    Avatar de Woufeil
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    1 076
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 1 076
    Points : 2 004
    Points
    2 004
    Par défaut
    Au fait, je viens de tester avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    print "res:".$couple{$mac};
    print "res:".$couple{"$mac"};
    Il me les prend sans aucun problème...

    Je suis d'accord avec toi djibril, mais ma version marche aussi, bien qu'elle sois moins idiomatique je dois bien l'avouer (j'avais pas vu ce point tient).

    Après, je préfère un bon vieux print "res:$couple{$mac}" qui lui ne pose aucun problème
    "En essayant continuellement, on finit par réussir. Donc : plus ça rate, plus on a de chances que ça marche" (devise Shadock)
    Application :

    ainsi qu'à regarder la avant de poser une question.

    La rubrique Perl recrute, contactez-moi.

  5. #5
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771
    Par défaut
    ouais, je suis aussi d'accord avec un bon vieux
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print "res:$couple{$mac}";

  6. #6
    Membre du Club
    Inscrit en
    Juin 2004
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 79
    Points : 46
    Points
    46
    Par défaut
    Salut!

    J'ai trouvé le problème. Un truc tout con, j'en étais sûr...
    En fait, dans ma variable $mac, j'avais un espace en fin de chaine de caractère... Je comprends pas trop comment il était arrivé là mais bon..

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 23/12/2011, 08h40
  2. Accéder à une valeur d'un tableau multidimensionel
    Par pasqual dans le forum Langage
    Réponses: 1
    Dernier message: 23/11/2009, 09h50
  3. Réponses: 7
    Dernier message: 03/10/2008, 11h37
  4. Accéder à une valeur d'un tableau dynamiquement
    Par Le_PounK dans le forum Struts 1
    Réponses: 2
    Dernier message: 23/03/2007, 13h35
  5. Réponses: 3
    Dernier message: 12/06/2006, 12h04

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