our %WA: shared; our $WAlock: shared; ... my ($key, $dtg, $bytes) = @_; if (!defined $WA{$key}) { { lock $WAlock; $WA{$key} = &share({}); #hook shared anon hash; { lock $WA{$key}; $WA{$key}{PS}=$dtg; # PS period Start $WA{$key}{PE}=$dtg + $secs; # PE period End $WA{$key}{PT}=0; # PT period Total $WA{$key}{stgs} =(); # list of decaying values for my $i (0..$rnds-1){ $WA{$key}{stags}[$i]=0; # init all stages to 0 } } } } # end of (! defined) entry being initialized