in reply to Threads that return hash

Its a common pitfall, the context is established here

my $thr = threads->create(\&sub1, 100 ); # scalar my ($thr) = threads->create(\&sub1, 100 ); # list

Explained at http://perldoc.perl.org/threads.html#THREAD-CONTEXT

If you ask me, this is really a bug in threads::join. If the join context is different from the creation context, join should complain.