... package main; use threads; use Devel::Peek; my $o = O->new(); print $o; $o->set( "abcde" ); print $o->get(); print "\nthreaded\n"; async { print $o->get( ); $o->set( 12345 ); print $o->get( ); }->join; print $o->get(); __END__ C:\test>xso N:rv:000000000035E128 o:0000000003FFA818 O=SCALAR(0x3ffa818) S:rv;000000000035E248 o:0000000003C318F0 G:rv;000000000035E248 o:0000000003C318F0 old:000000000035E128 abcde threaded G:rv;0000000004258CA8 o:0000000004229090 old:0000000000000000 S:rv;0000000004258CA8 o:0000000004229090 G:rv;0000000004258CA8 o:0000000004229090 old:0000000004259920 12345 G:rv;000000000035E248 o:0000000003C318F0 old:000000000035E128 abcde