in reply to Can an element be created because it was accessed ?
You can use Data::Diver to avoid this. But I'd go a much simpler route for this case. Simply change:
$testedNVal = $this->{N}[$1]{Val}; # to $testedNVal = ( $this->{N}[$1] || {} )->{Val};
[ I personally wouldn't be quick to use autovivification.pm in anything particularly important. Not since I looked over the huge volume of XS code that it contains and how it overrides so dang many bits of Perl's internals. It seems it had a bug where it caused Perl to hang when it tried to compile code like "for(;;){ ... }". I don't see where that even has anything to do with autovivification, ;). Yes, it sticks its fingers way too deep into guts. You'll very likely have no problems with it when you start using it (it seems well written and maintained). But it has the strong smell of ETOOMUCHMAGIC to me and I don't look forward to those "that is really weird" bugs that don't even hint at where the source of the problem is and you spend way too many hours mystified and frustrated and are never quite sure for how long the bug went away this time. ]
- tye
|
|---|