use threads; use threads::shared; use Devel::Pointer; { package foo; sub new { bless [rand 100] } sub blah { print "in blah()\n" } } my $obj = foo->new(); $obj->blah(); print "$obj: @$obj\n"; my $o : shared = address_of($obj); $t = threads->new(sub { print "\tin thread\n\t"; my $obj2 = deref($o); $obj2->blah(); print "\t$obj2: @$obj2\n"; }); $t->join; __output__ in blah() foo=ARRAY(0x804beec): 43.5769482822256 in thread in blah() foo=ARRAY(0x804beec): 43.5769482822256