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

Modules Perl Discussion :

Problème de déréférencement


Sujet :

Modules Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 296
    Par défaut Problème de déréférencement
    Bonjour

    J'ai créé une classe Mutuelle avec accesseur et modificateur (ci-dessous)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
     
    package Mutuelle;
    #constructeur
    sub new {
       my $this={};
       bless ($this);
       return $this;
    }
    #accesseur
    sub getIdMutuelle{
    	my $this=shift;
    	return $this->{IdMutuelle};
    }
    #"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    sub getNomMutuelle{
    	my $this=shift;
    	return $this->{NomMutuelle};
    }
    #""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    sub getAdresseMutuelle{
    	my $this=shift;
    	return $this->{AdresseMutuelle};
    }
    #""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    sub getCodePostalMutuelle{
    	my $this=shift;
    	return $this->{CodePostalMutuelle};
    }
    #""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    sub getVilleMutuelle{
    	my $this=shift;
    	return $this->{VilleMutuelle};
    }
    #""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    sub getTelMutuelle{
    	my $this=shift;
    	return $this->{TelMutuelle};
    }
    #""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    sub getFaxMutuelle{
    	my $this=shift;
    	return $this->{FaxMutuelle};
    }
     
    #modificateur
    sub setIdMutuelle{
    	my $this=shift;
    	$this->{IdMutuelle}=shift;
    }
    #""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    sub setNomMutuelle{
    	my $this=shift;
    	$this->{NomMutuelle}=shift;
     
    }
    #""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    sub setAdresseMutuelle{
    	my $this=shift;
    	$this->{AdresseMutuelle}=shift;
    }
    #""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    sub setCodePostalMutuelle{
    	my $this=shift;
    	$this->{CodePostalMutuelle}=shift;
    }
    #""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    sub setVilleMutuelle{
    	my $this=shift;
    	$this->{VilleMutuelle}=shift;
    }
    #""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    sub setTelMutuelle{
    	my $this=shift;
    	$this->{TelMutuelle}=shift;
    }
    #""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    sub setFaxMutuelle{
    	my $this=shift;
    	$this->{FaxMutuelle}=shift;
    }
    #methode ajouter
    sub ajouter{
     my($obj) = @_;
     my $this = {"obj" => $obj};
    print %{$this->{"obj"}};
     }
    #methode supprimer
    sub supprimer{
    }
    #methode modifier
    sub modifier{
     
    }
    1;
    et voici mon "lanceur"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    use Mutuelle;
    my $objet = Mutuelle->new();
    #$objet->setNomMutuelle("Mutuelle1");
    $objet->setVilleMutuelle("Saint nazaire");
    #$essai = $objet->getNomMutuelle();
    $essai = $objet->getVilleMutuelle();
    $objet->ajouter($essai);
    et quand je passe $essai

    et que je veux le récupérer dans ma fonction ajouter()

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    sub ajouter{
    my($obj) = @_;
    print %{$obj};
    }
    quand je déférence avec le %{$obj}
    il me sort bien Mutuelle1 mé il me met devant le nom de ma variable du get
    exemple ici il m'affiche NomMutuelleMutuelle1

    Pourquoi ? je vois par pourquoi il ne m'affiche pas que Mutuelle1

    Merci de vos réponses

  2. #2
    Membre émérite Avatar de Gardyen
    Homme Profil pro
    Bio informaticien
    Inscrit en
    Août 2005
    Messages
    637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bio informaticien

    Informations forums :
    Inscription : Août 2005
    Messages : 637
    Par défaut
    faq

    quand on utilise une methode d'un objet, le premier argument récupéré est l'objet que tu utilises (même sans le passer en paramètre)

    donc faut le récupérer en premier:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    sub ajouter{
    my $self = shift;
    my($obj) = @_;
    print %{$obj};
    }

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 296
    Par défaut
    j'avais essayer de mettre

    my $self = shift; avant de récupérer et d'afficher

    my($obj) = @_;
    print %{$obj};

    Le problème c'est qu'il ne m'affiche plus rien

  4. #4
    Membre émérite Avatar de Gardyen
    Homme Profil pro
    Bio informaticien
    Inscrit en
    Août 2005
    Messages
    637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bio informaticien

    Informations forums :
    Inscription : Août 2005
    Messages : 637
    Par défaut
    active les warnings !

    une bonne pratique en perl: commencer par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    #!/usr/bin/perl
     
    use strict;
    use warnings;
    et tu verras pourquoi plus rien ne s'affiche

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 296
    Par défaut
    quand je met
    use strict;
    use warnings;
    dans mon lanceur il me met ces warnings

    C:\Documents and Settings\starit\Bureau>perl lanceur.pl
    Global symbol "$essai" requires explicit package name at lanceur.pl line 7.
    Global symbol "$essai" requires explicit package name at lanceur.pl line 9.
    Execution of lanceur.pl aborted due to compilation errors.
    je comprend pas pourquoi il me casse les pieds avec un nom de package explicite par rapport à ma variable $essai, je vois pas le rapport

  6. #6
    Responsable Perl et Outils

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut
    pour declarer une varible proprment en perl on fait
    my $toto

    et vu que tu n'as aucun my, tu as ton message d'erreur. Donc relis ton code et declare proprement tes variables

Discussions similaires

  1. Réponses: 8
    Dernier message: 07/06/2010, 21h22
  2. Problème d'installation oracle 8.1.7 sous NT
    Par Anonymous dans le forum Installation
    Réponses: 7
    Dernier message: 02/08/2002, 14h18
  3. Problème d'impression
    Par IngBen dans le forum C++Builder
    Réponses: 7
    Dernier message: 22/05/2002, 11h37
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10
  5. Réponses: 6
    Dernier message: 25/03/2002, 21h11

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