On Wed, Feb 19, 2014 at 02:51:09PM +0100, Abigail wrote: > I've been wondering about how easily people resort to storing data in > hashes, using string literals as keys, while they cry foul if they ever > saw a program not using strict. Specially when it comes to traditional > Perl objects, who store their entire state in a hash, and none in a > lexical variable. [1] > > Even without strict, typos in variables at least warn (assuming warnings > are on), while typos in string literals at best give you a run time > error or warning.
This is why I like using Tie::Hash::Vivify: my $hash = Tie::Hash::Vivify->new(sub { confess("No auto-vivifying\n".Dumper(\@_)); }); It's still a run-time error, but at least it's a nice obvious run-time error. But I confess to not basing my objects on it. I suppose I could, because re-blessing tied objects does leave the tie() magic intact. -- David Cantrell | Cake Smuggler Extraordinaire All praise the Sun God For He is a Fun God Ra Ra Ra!