On Thu, 15 Jun 2017 03:01:28 +0200 demerphq <demerphq@gmail.com> wrote: > During compilation this hash may be used to store complex > structures, such as code references, however once compilation is > completed these structures will be flattened to a representation > that means that only simple values can be accommodated and retrieved > at run time via C<caller()> as above. I'd say that doesn't quite fit with Zefram's clarification. I'd write something more like: During compilation this hash may be used to store complex structures, such as code references, as well as simple non-referential scalars. A flattened copy of the values written into the hash is stored with the code that was compiled while it was in effect, and is the copy available via the C<caller()> mechanism. This copy preserves simple strings and numbers, but will not preserve more complex values like references. Just to really hammer home the point that was clarified; in that there's two copies storing two versions of the truth, and whether or not references work depends on which copy you are reading from. -- Paul "LeoNerd" Evans leonerd@leonerd.org.uk | https://metacpan.org/author/PEVANS http://www.leonerd.org.uk/ | https://www.tindie.com/stores/leonerd/Thread Previous | Thread Next