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 utilisation de fonction


Sujet :

Langage Perl

Vue hybride

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

    Informations forums :
    Inscription : Octobre 2009
    Messages : 55
    Par défaut Problème utilisation de fonction
    Bonjour
    Je cherche à utiliser une hash table que me renvoie ma méthode dans une référence . la méthode se trouve dans un package différent voila le bout de code :
    script applant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
      1 #!/usr/bin/perl -w
      2 use strict ;
      3 use Switch ;
       use Tables::Tables ;
       my %tables = %{Tables::Tables::return_tables()};
    quand je fais un dump de %tables , c'est vide .
    et j'ai ça comme message d'erreur :
    Undefined subroutine &Tables::Tables::return_tables called at ./main.pl line 53.

    et ci dessous la fonction dans le fichiers /Tables/Tables.pm
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
       1 require 5.004;
       2 package Tables;
       3 use strict ;
       4 
       5 my (@table1,@table2,@table3);
       6 my %tables_1 = ( 0 => \@table1, 1 => \@table2, 2 => \@table3 );
       7 
       8 sub return_tables {
       9         return \%tables_1;
      10 }

    Merci

  2. #2
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Par défaut
    En fait, tu n'as pas défini un hashage avec sa clé et sa valeur, mais seulement avec une valeur, d'où l'erreur que tu obtiens.
    Ensuite, tu n'as pas fourni la référence à la méthode, mais tu as appelé la méthode et mis dans le table, le résultat.

    Pour faire ce que tu veux, il faudrait plutôt écrire quelque du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my %tables = (return_tables => &Tables::Tables::return_tables);
    Est-ce une méthode de classe ? (non attachée à un objet). Si c'est une méthode d'objet, je ne vois pas l'intérêt de procéder à son enregistrement dans une table de hashage, vu que la méthode est déjà intrinsèquement attachée à l'objet.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2009
    Messages : 55
    Par défaut
    Merci pour votre réponse .
    Oui c'est une méthode de classe elle n'est attaché à aucun objet .
    Mon problème en faite est d'exporter mon hash pour pouvoir l'utiliser dans le script principale appellant.

    le script Table.pm contient juste des tables qui sont trop grandes et gênante pour la clarté de mon script main.

    Merci

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2009
    Messages : 55
    Par défaut
    J'ai essayé avec ce que vous me proposez !! rien à faire toujours la même erreur.

  5. #5
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Par défaut
    Dans Tables/Tables.pm, l'instruction package n'est pas correcte. Il faut écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    package Tables::Tables;

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2009
    Messages : 55
    Par défaut résultat dump et récupération de hash comme résultat pour un appel d'1e fonction
    Bonjour
    Merci pour vos conseils !! ça l'air de marcher.
    je rencontre aussi un autre problème donc quand je reçois mon hash et d'ailleurs j'utilise l'expression que vous m'avez proposez , je n'arrive pas à utiliser les tables qui y sont.
    Je fais un dump dessus et j'ai ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $VAR1 = 'return_tables';
    $VAR2 = {
              '1' => [ '10011111101101110',
                       '10011111100101100',
                       '10011111100100110'
                     ],
              '0' => ['11011111011110100'
                     ],
              '2' => [
                       '10000111110110010',
                       '11100011111101010'
                     ]
            };
    return_tables est le nom de la fonction que j'appelle.
    je vous demande si il y a moyen soit si vous connaissez un tuto qui explique ça en détail ou de me dire c'est quoi qu'on fait dans l'expression que vous m'avez proposez exactement.

Discussions similaires

  1. Problème : Utiliser une fonction pour 2 colonnes
    Par Eleanor dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 16/07/2013, 15h04
  2. [MySQL] Problème utilisation de fonctions php
    Par tocardinho dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 19/02/2009, 14h15
  3. Réponses: 4
    Dernier message: 19/05/2006, 21h17
  4. Réponses: 3
    Dernier message: 25/12/2005, 19h43
  5. Problème d'utilisation de fonction dans une popup
    Par Pymm dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 06/09/2005, 15h00

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