Bonjour,
J'ai une classe dont le constructeur est le suivant:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
sub new
{
	my ($self) = @_; 
	my $classe = ref($self) || $self;;
	my $this = {};
	bless ($this,$classe);
	return $this; 
}
Cette classe contient une méthode Start dont l'unique but est d'appeler une autre de ses méthodes (ici read_client) dans un nouveaux thread:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
sub start {
	my ($this,$clientSocket) = @_;	
	$this->{clientThread} = threads->create "read_client",$this,$clientSocket);
}
Mon problème est que la méthode read_client modifie des attributs de l'instance, et que les modifications ne sont pas "remontée" au programme appelant:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
my $test = TestClass->new();
test->start($socket)
... 
#fin du thread
print $test->{UnAttributModifiéDansLeThread};
#valeure affichée: Pas de modification
J'imagine que le problème est du à un mauvais passage de la référence sur l'instante au niveau du thread->create. J'ai bien essayé de passer en paramètre \$this et de récupérer la valeur par
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
my ($refThis,$clientSocket)=@_;
my $this = $$refThis;
Mais le résultat est le même...

Pourriez vous me débloquer?

Merci de votre aide!!!