#! perl -lw use strict; use bignum; use threads; use threads::shared; use Data::Dump qw[ pp ]; my %results :shared; async { my %comps; for my $i ( 1 .. 1e6 ) { $comps{ $i } = $i ** $i; } lock(%results); %results = %comps; }->detach; my $c; while( sleep 1 ) { print "timer event"; $c = do { lock(%results); scalar keys %results; }; last if $c; } pp $c;