laziness, impatience, and hubris | |
PerlMonks |
Re^2: Why do $x="$h->{foo}" and $x=$h->{foo} have different effects (as reported by Devel::Peek)?by ELISHEVA (Prior) |
on Mar 25, 2009 at 17:19 UTC ( [id://753184]=note: print w/replies, xml ) | Need Help?? |
Many thanks - I hadn't realized that PV was updated "just-in-time". But why doesn't this confuse Perl? After experimenting a bit, it seems that when IV and PV have different values, Perl always knows which one to trust - is it one of the flags? (Update: yes - see kyle's and ikegami's posts below) On the other hand, Storable seems to blindly favor PV when both IV and PV exist, even if they are in conflict. Is this a bug in Storable (v. 2.15)? Should it be doing what Perl does, but isn't? Best, beth Update:After further experimentation it appears that Storable does dump the correct value but its choice of binary representation for that value seems to be affected by the flags at the time of freezing. Thus an IV only variable (only IOK,pIOK flags set) freezes to a different string than a variable where both PV and IV are set (IOK,pIOK,POK,pPOK flags set). This is true even though both would stringify to the same Perl string (e.g. 5 => "5") and both would appear to be equal (in Perl) when thawed. That is, $x1 eq $x2, $x1 == $x2 would both be valid and true, even in strict mode.
In Section
Seekers of Perl Wisdom
|
|