The second example is the one that crashes Perl for me. It looks a little strange, I'll admit, because it's supposed to be inside a function, and $foo is supposed to be passed in via @_. Here's an idea of how it looked:
sub bar { my ($foo) = @_; foreach my $foo_entry (@$foo) { foreach (keys %$foo_entry) { if (defined($foo->{$_}->{foo}) && defined($foo->{$_}->{foo}->{bar})) { return $foo->{$_}->{foo}->{bar}; } } } return; }
During simplification, I accidentally put the return inside the foreach, but it doesn't matter. The defined call kills it right away.

This code is busted, as I forgot to change the internal references to $foo_entry. What surprised me was that a) strict didn't care, and b) it caused Perl to go crazy.

After some experimentation, I came up with that example as the least amount of code required to reproduce the problem. The data given is complete junk, the real data much more complex, but it too is the bare minimum required to produce the problem. The real structure does have additional levels of "oH".

Pseudo-hashes are dangerous to your health then?

In reply to Re^2: Automagic Array to Hash Conversion? Pseudo-Hash Explosion by tadman
in thread Automagic Array to Hash Conversion? Pseudo-Hash Explosion by tadman

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.