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 :

Problème de warning sur clé d'un 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
    Juin 2007
    Messages
    50
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 50
    Par défaut Problème de warning sur clé d'un hash
    Salut a tous,

    Je déclare mon hash de hash (de hash) de cette manière :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    my %audio_dvd = ();
    		keys (%audio_dvd) = 0;
    		keys (%{$audio_dvd{0}}) = 'aid';	#	aid
    Puis dans une boucle foreach je "rempli" le hash de cette manière :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    foreach my $lvar (@aid) {
    			keys (%{$audio_dvd{0}{'aid'}}) = $i;
    			$audio_dvd{0}{'aid'}{$i} = $aid[$i];
    			$i++;
    		}
    Et voilà le warning :

    Argument "aid" isn't numeric in scalar assignment at ./trans264.pl line 1304,
    <STDIN> line 6 (#1)
    (W numeric) The indicated string was fed as an argument to an operator
    that expected a numeric value instead. If you're fortunate the message
    will identify which operator was so unfortunate.
    Le seul truc que je capte pas, c'est lorsque je remplace ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    keys (%{$audio_dvd{0}}) = 'aid';
    Par ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    keys (%{$audio_dvd{0}}) = 0;
    Alors, j'ai plus de warning (mais c'est vraiment moins lisible voir illisible )

    Donc, on ne peut pas déclaré un mot en tant que clé d'un hash ou je fais quelque chose qui va pas ?

    Jjeje007

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

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 1 076
    Par défaut
    Bonjour,

    Je te conseille la lecture de cette partie du cours de Sylvain Lhullier. Ton utilisation de la fonction keys est franchement étrange... Cette fonction retourne un tableau contenant toutes les clés de ton hash. Donc par exemple, keys (%audio_dvd) va te retourner juste après la déclaration de %audio_dvd un tableau vide...
    Ensuite, je ne comprend même pas ce que va représenter %{$audio_dvd{0}}... $audio_dvd[0] va valoir undef, jusque là ça va. A la limite, $audio_dvd{0} vaudra aussi undef. Mais alors pour le %{}, tu essayes de déréférencer un scalaire valant undef, je ne comprend pas comment perl interprète ça...

    Regarde le lien que je t'ai donné et dit nous ce que tu veux faire

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    50
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 50
    Par défaut
    Merci pour le lien,

    En fait j'ai trouvé : j'ai fait n'importe quoi

    Bref, j'ai lu un peu plus de doc sur tout ce qui hash & co (car en fait c'est pas un hash que je fait mais un hash de hash de hash )

    Juste pour info, voilà ce que ca donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #	Déclaration du hash de hash (de hash ...)
    		my %audio_dvd = ();
    		$audio_dvd{0}{title} = $dvd_title;
    		$audio_dvd{0}{info} = $info_log;
    		$audio_dvd{0}{fps} = $fps;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    foreach my $lvar (@aid) {
    			$audio_dvd{0}{aid}{$i} = $i;
    			$audio_dvd{0}{aid}{$i} = $aid[$i];
    			$i++;
    		}
    Et bien sur, comme ça, ça ni queue, ni tête
    Faut voir avec le code complet, mais je vous le soumettrez un jour quand ca sera pratiquement terminé (et j'en suis quand même assez loin vu que je passe mon temps à réécrire plus proprement en ce moment).

    Jjeje007

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

Discussions similaires

  1. Problème d'encodage sur Mac (Warning et notices avec codes natifs de drupal)
    Par maxwel56 dans le forum Général Conception Web
    Réponses: 0
    Dernier message: 20/03/2012, 15h11
  2. Problème de warning sur ArrayList
    Par chadnour dans le forum Collection et Stream
    Réponses: 10
    Dernier message: 27/01/2008, 19h49
  3. [CR] Problème de sélection sur un champ date
    Par noluc dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 21/11/2003, 16h56
  4. Problème avec RDTSC sur K6-III
    Par le mage tophinus dans le forum x86 32-bits / 64-bits
    Réponses: 17
    Dernier message: 30/09/2003, 09h43
  5. problème de float sur SQL server 2000.
    Par fidji dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 24/07/2003, 14h15

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