I discovered also GrandFather's note that Readonly is somehow the source of misery. What I see happening is that the values set with Readonly are set as strings rather than numbers. According to perlop, the bitwise OR operating on strings is different than if it sees integers.
What's very strange, though, is that the numbers-as-strings thing only happens after they've been used once. That's why your usage of them in @Vals is triggering the bug. If I leave your piece commented out but print them with Data::Dumper, I get the same behavior (but not with a simple print—weird!).
Anyway, my crude solution is to use string eval to get closer to what you want.
Readonly my $_debug_ops => eval "($DBG_RAND | $DBG_KEYS | $DBG_INFO)";
That works in this case, but it's not very satisfying in general. I don't really understand what's going on in Readonly, so I haven't been able to come up with something better.
In reply to Re: runtime problem; elusive error
by kyle
in thread runtime problem; elusive error
by perl-diddler
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |