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        


In reply to Re: Can an element be created because it was accessed ? ( || {} ) by tye
in thread Can an element be created because it was accessed ? by palkia

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.