Inside Object2: sub setsomething { my $self = shift; $self->{_object1}->{mode} = 1; } Inside Object3: sub blah { my $self = shift; if ($self->{_object1}->{mode}){ return $self->{_object1}->{_cgi}->param('blah'); } else { return $self->{_object1}->{_cgi}->param('pleh'); } }