in reply to Re: Automagic Array to Hash Conversion? Pseudo-Hash Explosion
in thread Automagic Array to Hash Conversion? Pseudo-Hash Explosion

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?