Thanks for getting back to me. I'm using the local %datahash
construct so I can avoid gotchas with passing references (but it seems I've run into another gothcha somewhere else). %datahash
is essentially just a thread global and the local is there to
automatically garbage collect it as the forever loop restarts. I can't
use my because the variable wouldn't be visible to the descendant
subroutines. Now correct me if I'm wrong, but isn't %datahash garbage
collected the moment the forever loop loops? It's not creating *new* %datahashes
and keeping the *old* %datahash's stashed away right? I'm manually
walk deleting everything out of %datahash at the end of the loop
so either way it shouldn't be building up memory.