my $server = MyWebServer->new($kiosk_port); print "INSTANTIATING KIOSK ==============================\n"; $kiosk = Kiosk->new($placard, $server, $debug_level); #### let the server know what the kiosk obj is: $server->{kiosk} = $kiosk; #### package Server; ... sub new { ... $self = {kiosk=>undef}; ... return $self; } sub kiosk { my $self = shift; my $m = shift; if( defined $m ){ die unless $self->_set_kiosk($m); } return $self->{kiosk} } # returns 0 on failure, 1 on success sub _set_kiosk { my $self = shift; my $akiosk = shift; if( ! $akiosk->connected() ){ return 0 } $self->{kiosk_id} = $akiosk->id(); print "setting the kiosk to this: " . $akiosk. "\n"; return 1; } sub do_transaction { my $self = shift; return 0 unless defined $self->{kiosk}; ... }