Bonjour,
J'ai une méthode de classe (method1) qui appelle une autre méthode (method2) de la même classe.
Ces 2 méthodes récupère le paramètre $this ainsi que les param utilisateur de manière classique.
Par contre, dans la méthode2, le parametre $this n'est pas présent dans les paramètres. Est ce qu'il faut le passer de manière explicite lors de l'appel dans method1 ?
le code de mon programme
Le code de ma classe
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 #!/usr/bin/perl -w use warnings; use strict; use TestPackage; my $var = TestPackage->new(); $var->method1("toto");
Le résultat généré
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 package TestPackage; use warnings; use strict; sub new { my($classe) = @_; $classe = ref($classe) || $classe; my $this = {}; bless($this, $classe); return $this; } sub method1 { my($this, $Name) = @_; print "Method1 : this=", $this, "\n"; print "Method1 : Name=", $Name, "\n"; die() unless defined($this); die() unless defined($Name); method2($Name, "tata"); } sub method2 { my($this, $Name1, $Name2) = @_; print "Method2 : this=", $this, "\n"; print "Method2 : Name1=", $Name1, "\n"; print "Method2 : Name2=", $Name2, "\n"; die() unless defined($this); die() unless defined($Name1); die() unless defined($Name2); print("It works !!\n"); } 1; # Important, ne pas oublier
On voit bien $this n'arrive pas dans method2
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 [root@centos report]# ./test.pl Method1 : this=TestPackage=HASH(0xdab52a0) Method1 : Name=toto Method2 : this=toto Method2 : Name1=tata Use of uninitialized value in print at TestPackage.pm line 32. Method2 : Name2= Died at TestPackage.pm line 35.
Merci de votre aide ou de vos éclaircissements
Partager