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 :

Clé GE dans un tableau associatif


Sujet :

Langage Perl

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2006
    Messages : 87
    Points : 38
    Points
    38
    Par défaut Clé GE dans un tableau associatif
    Bonjour à tous,


    Je travail actuellement sur un script perl utilisant un tableau associatif dont une des clé est GE.

    Cependant, lors de l'execution, cette clé me génère un warning, arguant que GE est désormais deprecated.

    Je travail sous SGI-Irix utilisant perl 5.6.1 disponible sur le site freeware de SGI.

    Y'aurait-il un moyen d'éviter ce warning?

    Merci à tous

  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 Re: Clé GE dans un tableau associatif
    Bonjour,

    Citation Envoyé par ::Fistons
    Je travail actuellement sur un script perl utilisant un tableau associatif dont une des clé est GE.

    Cependant, lors de l'execution, cette clé me génère un warning, arguant que GE est désormais deprecated.
    Peux-tu nous éclairer un petit peu plus sur ce que tu fais, nous montrer un bout d'utilisation de ce tableau associatif avec la clef GE ? Quelques lignes de code collées entre les balises idoines ([code] et [/code]).

    Parce que là ... je sèche un peu.

    Pour moi, il n'y a pas de problème pour utiliser une clef GE :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $hash{GE} = "Egg";
    print $hash{GE}."\n";
    Mais peut-être ai-je mal compris ce que tu voulais faire
    La FAQ Perl est par ici
    : La fonction "Rechercher", on aurait dû la nommer "Retrouver" - essayez et vous verrez pourquoi !

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2006
    Messages : 87
    Points : 38
    Points
    38
    Par défaut
    Voila le bout de code qui pose probleme:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    %Elements = (H =>"1",LI =>"3",BE =>"4",B =>"5",C =>"6",CT =>"6",N =>"7",NT =>"7",O =>"8",OT =>"8",F =>"9",NA =>"11",MG =>"12",
       AL =>"13",SI =>"14",SIT => "14",P =>"15",PT =>"15",S =>"16",ST =>"16",CL =>"17",K =>"19",CA =>"20",SC=>"21",TI => "22",V=>"23", 
       CR =>"24",MN=>"25",FE =>"26",CO =>"27",NI =>"28",CU =>"29",ZN =>"30",GA =>"31",GE =>"32",AS =>"33",SE =>"34",BR =>"35");

    Et voici le warning que j'obtiens:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Use of GE is deprecated at ./GREEN.pl line 3385.
    A noter que j'utilise les module warnings, Math::Trig et FileHandle.

    Peut etre est ce du a ma version de perl?

  4. #4
    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
    Bizarre, bizarre ...

    Ce script minimal ne me pose aucun problème :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    perl -e 'use warnings; use Math::Trig; use FileHandle; %Elements = (H =>"1",LI =>"3",BE =>"4",B =>"5",C =>"6",CT =>"6",N =>"7",NT =>"7",O =>"8",OT =>"8",F =>"9",NA =>"11",MG =>"12",AL =>"13",SI =>"14",SIT => "14",P =>"15",PT =>"15",S =>"16",ST =>"16",CL =>"17",K =>"19",CA =>"20",SC=>"21",TI => "22",V=>"23",CR =>"24",MN=>"25",FE =>"26",CO =>"27",NI =>"28",CU =>"29",ZN =>"30",GA =>"31",GE =>"32",AS =>"33",SE =>"34",BR =>"35"); print $Elements{GE}."\n";'
    (C'est bien 32 la réponse ? On dirait de la chimie )

    Il est vrai que je suis en Perl 5.8, sous Linux comme sous Windows, mais ce qui est déprécié en Perl 5.6.1 devrait l'être encore plus en 5.8.6 !
    La FAQ Perl est par ici
    : La fonction "Rechercher", on aurait dû la nommer "Retrouver" - essayez et vous verrez pourquoi !

  5. #5
    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
    Il s'agit probablement d'un petit problème de compatibilité...
    GE était autrefois (il y a très longtemps, dans la préhistoire de Perl) une écriture alternative de 'ge' (greater or equal, >= pour les string), aujourd'hui abandonnée. Visiblement, le parser de Perl5.6 était encore sensible à ce mot clef, bien que le signalant 'deprecated'. Tandis que le parser de Perl5.8 ne fait plus du tout de distinction entre GE et un mot nu classique ('bareword', interdit si on utilise 'strict'). De ce fait, "GE => 2" est correct pour Perl5.8, du fait de la transformation automatique de GE en string dû au '=>' qui le suit, et incorrect en 5.6.

    Pour corriger cela, il suffit de signaler explicitement à 5.6 que GE est une string, une clé du hash :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    %Elements = (H =>"1",LI =>"3",BE =>"4",B =>"5",C =>"6",CT =>"6",N =>"7",NT =>"7",O =>"8",OT =>"8",F =>"9",NA =>"11",MG =>"12",
       AL =>"13",SI =>"14",SIT => "14",P =>"15",PT =>"15",S =>"16",ST =>"16",CL =>"17",K =>"19",CA =>"20",SC=>"21",TI => "22",V=>"23",
       CR =>"24",MN=>"25",FE =>"26",CO =>"27",NI =>"28",CU =>"29",ZN =>"30",GA =>"31",'GE' =>"32",AS =>"33",SE =>"34",BR =>"35");
    Ou passer en 5.8

    (NB : Pourquoi entourer les nombres de double-quotes ? Ca ne fait aucune différence de les mettre sans)

    --
    Jedaï

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2006
    Messages : 87
    Points : 38
    Points
    38
    Par défaut
    Merci beaucoup, en effet, les simples quotes suffisent a degager les warnings.

    Pour les nombres entre double-quotes, a vrai dire je ne sais pas non plus, c'est un code que je dois etudier/retravailler dans le cadre de mon stage... O joie.


    Et pour finnir, j'aimerais passer a perl 5.8... Mais sur le SGI 64 bits @300 mhz sous Irix64 6.5... C'est dur de le trouver


    En tout cas, encore une fois, merci.

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 19/11/2008, 10h53
  2. Réponses: 2
    Dernier message: 15/02/2008, 21h45
  3. [Tableaux] Clé dans un tableau associatif
    Par pc.bertineau dans le forum Réplications
    Réponses: 9
    Dernier message: 19/06/2007, 17h35
  4. Problème de lecture dans un tableau associatif … ?
    Par sadao dans le forum Requêtes
    Réponses: 3
    Dernier message: 20/07/2006, 22h24
  5. Réponses: 3
    Dernier message: 06/04/2006, 16h09

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