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 :

ignorer les majuscules pour un tableau associatif


Sujet :

Langage Perl

  1. #1
    Membre du Club
    Inscrit en
    Mars 2004
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 59
    Points : 56
    Points
    56
    Par défaut ignorer les majuscules pour un tableau associatif
    Bonjour

    J'ai un tableau associatif contenant des adresses MAC associées a des adresses IP. Par exemple 000802CA4943 => 10.1.1.1 000802CA4944 => 10.1.1.2 ...etc... .Mon probleme vient lorsque je veux recupérer l'adresse IP associées a une adresse MAC. Si j'ai l'adresse MAC 00-08-02-CA-49-43, ça fonctionne, et lorsque j'ai 00-08-02-ca-49-43, je n'ai pas d'adresse IP.
    Donc comment fait-on pour que les majuscule ne soit pas pris en compte ?

    voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    association_AdresseMAC_PC("00-08-02-ca-49-43")
    sub association_AdresseMAC_PC
    {
      my $recherche = shift;     #Adresse MAC passe en parametre
      $recherche =~ s/-//g;
      $recherche =~ s/://g;
      my $pc = $adresseMAC_PC{$recherche};
      if ($pc eq "")
      {
        $pc = " ";
      }
      return $pc;
    }

  2. #2
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 583
    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 583
    Points : 2 031
    Points
    2 031
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    my $adresseMac = "00-08-02-ca-49-43";
    $adresseMac =~ tr/a-z/A-Z/;
    association_AdresseMAC_PC($adresseMac);
    Et voilà

    Maintenant, si ton script a besoin de conserver les adresses MAC telles qu'il les trouve, tu peux toujours copier la valeur dans une variable temporaire, transformer dans celle-ci les minuscules en majuscules et envoyer cette variable temporaire à ta fonction.

  3. #3
    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
    S'il y a la possibilité d'utiliser des modules, il me semble avoir vu, une fois, l'usage du module Tie::CPHash.

    C'est un module qui fournit une table de hachage insensible à la casse (dans les recherches), mais qui l'enregistre quand même (pour la restituer au besoin).

    Sinon, il y a la possibilité d'utiliser le simple Tie::Hash pour faire convenir la structure à ton besoin

    Ou à défaut, il faut y aller à la main, en découvrant les miracles de l'opérateur tie (une lecture attentive de "perldoc perltie" sera alors nécessaires).

    Bon courage.

  4. #4
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Pour être insensible à la casse, une recette classique (peut-on vraiment appeler ça une recette d'ailleurs) consiste à utiliser toujours la même casse, autrement dit à mettre des lc() (lower-case) partout :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    my $MAC = ... ;
     
    my $hash{lc $MAC} = ... ;
     
    print $hash{lc $MAC};
    Alors bien sûr, si tu peux installer un module, Tie::CPHash est préférable (il fait sans doute l'équivalent en interne, tout en maintenant un hash des noms originaux), mais sinon, sauf si tu as envie d'en apprendre plus sur Tie, autant utiliser la solution la plus simple.

    --
    Jedaï

  5. #5
    Membre du Club
    Inscrit en
    Mars 2004
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 59
    Points : 56
    Points
    56
    Par défaut
    La méthode de Arioch fonctionne pour ce que je veux.
    Merci bien

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    427
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 427
    Points : 459
    Points
    459
    Par défaut
    un petit lc dans la clé c'est tout de meme plus propre qu'un gros tr// avec assignation obligatoire de variable je trouve!

  7. #7
    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
    pourquoi faire simple quand on peut faire compliqué

  8. #8
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 583
    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 583
    Points : 2 031
    Points
    2 031
    Par défaut
    Bande de jaloux qui avez oublié que TIMTOWTDI !!

  9. #9
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 172
    Points : 208
    Points
    208
    Par défaut
    Salut,
    Citation Envoyé par Arioch
    Bande de jaloux qui avez oublié que TIMTOWTDI !!
    c'est
    TMTOWTDI


    lami20j

  10. #10
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 583
    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 583
    Points : 2 031
    Points
    2 031
    Par défaut
    TIMTOWTDI : There Is More Than One Way To Do It



    Que veux dire TMTOWTDI ?

  11. #11
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 583
    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 583
    Points : 2 031
    Points
    2 031
    Par défaut
    Source : linux-france.org

    TIMTOWTDI

    [Perl] There Is More Than One Way To Do It. Devise des perliens, aussi orthographiée TMTOWTDI.


    Nous avons raison tous les deux, na !

  12. #12
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 172
    Points : 208
    Points
    208
    Par défaut
    Re,
    Citation Envoyé par Arioch
    Source : linux-france.org

    TIMTOWTDI

    [Perl] There Is More Than One Way To Do It. Devise des perliens, aussi orthographiée TMTOWTDI.


    Nous avons raison tous les deux, na !
    En ce cas on va faire
    /ti?mtowtdi/i

    lami20j

  13. #13
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 583
    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 583
    Points : 2 031
    Points
    2 031
    Par défaut

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 21/01/2009, 14h45
  2. Réponses: 2
    Dernier message: 04/09/2008, 13h41
  3. changer les clés d'un tableau associatif !!
    Par gali_fr dans le forum Langage
    Réponses: 6
    Dernier message: 08/07/2008, 16h06
  4. Réponses: 3
    Dernier message: 25/08/2007, 09h45
  5. Réponses: 1
    Dernier message: 15/03/2006, 16h58

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