On Mon Sep 05 14:55:17 2016, ANDK wrote:
Show quoted text> > Bisect?
>
> commit 2484f8dbbb584bb7bc7107e23ebd49f694eb3ea2
> Author: Father Chrysostomos <sprout@cpan.org>
> Date: Sun Jun 23 07:08:24 2013 -0700
>
> Stop folding of ops from changing mutability
I was planning to write a patch for this module, but I have neither the time nor the energy for it, as it is proving to be more work than I bargained for.
I can, however, explain what perl commit 2484f8d is doing. The return value of 3+2 (for example) is no longer a constant 5 if you use it in lvaluish context such as \(3+2) or foreach(3+2). Each time that you reference it you will get a difference scalar. I suspect the module is depending on \(3+2) (or whatever) returning a reference to the same constant every time.
Note also that changes in 5.22 may break this module further. In 5.22 a sub ref may be stored directly in the stash, without there having to be a glob.
In general, if you have code to handle special symbol table entries other than typeglobs, you should check that the entry is on a type that your code supports, and vivify the typeglob (\*{$name}) otherwise, to make the code future-proof.