use strict; use POE; use POE::Wheel::SocketFactory; my $session1 = POE::Session->create( inline_states => { _start => \&start1, } ); my $session1_id = $session1->ID(); POE::Session->create( inline_states => { _start => \&start2, access_session1 => \&access, }, ); POE::Kernel->run(); sub start1 { # start something so the session doesn't go away. $_[HEAP]->{factory} = POE::Wheel::SocketFactory->new( BindPort => '88888', SocketProtocol => 'tcp', Reuse => 'on', SuccessEvent => 'event_factory_success', FailureEvent => 'event_fatal_error', ); $_[HEAP]->{"test"} = {'a'=>1,'b'=>2}; } sub start2 { #fire an event $_[KERNEL]->yield("access_session1"); } sub access { my $sess = $_[KERNEL]->alias_resolve($session1_id); my $data = $sess->get_heap()->{"test"}; foreach my $k (keys %$data){ print "$k, $data->{$k}\n"; } } __OUTPUT__ a, 1 b, 2