BrowserUK, I certainly would benefit from an explanation ... in this thread or in a separate one (referenced from here) ... as to what the “granularity” of the lock semantics in Perl actually are. “What, exactly, is ‘the thing that you can lock?’” Is it .. a data item? .. the hash-structure itself? .. a particular reference-point? This subtle point is, to me, the essential question here, and I do not know the answer, but I am quite certain that you do.
The objective of “locking a data-structure in Perl” is certainly not a simple one, given that the entire data management system is centered around the notion of “references.” There is no hierarchy ... anything can refer to anything, and those references can come both from language-variables and from the various data items themselves. The implementation has to have made certain decisions ... simplifications. I’d very much like to hear you elucidate what they are.