in reply to Threads and object access
Disclaimer: this is based purely on reading, not real experience ;^)
The model of threading in 5.8, ithreads, completely separates variables created in one thread from those in other threads. Much like forked processes, ithreads duplicate data rather than share it unless explicitly told to do so. I believe the reason for this approach is due to a vast quantity of Perl code having been written without consideration for thread safety. ithreads separate data to prevent race conditions when multiple threads manipulate the same object.
So, I believe what you'll need to do is declare your variable $HS like:
oruse threads::shared; my $HS : shared; # compile time declaration $HS = new Something();
use threads::shared; $HS = new Something(); share($HS);
If this doesn't answer your question, perhaps you could post the relevant sections of code.