One of the options of XML::Simple is to insert an array on each hierarchy level, so it can distinguish between attributes and elements.
My first use was without that extra level, so I could access stuff just by dereferencing hashes:
It worked well until I realized, that I needed that extra level. The structure changed from something like:$template->{level1}->{level2}->{element1} = '1234';
to$template = { 'level1' => { 'level2' => { 'element1' => '1234' } } };
But I didn't change my program. :-($template = { 'level1' => [ { 'level2' => [ { 'element1' => '1234' } ] } ] };
print $template->{level1}->{level2}->{element1};
just printed nothing and
$template->{level1}->{level2}->{element1} = '1234';
gave me that wonderful error message, telling me just nothing about what happend:
Out of memory!
So when I access elements of a datastructure in the wrong way I just get undef, but when I assign to it in the wrong way Perl runs out of memory.
I think Perl should report an error, as it does when you try to use a normal hash reference as an array reference.
Is this behaviour documented somewhere?
Is it a bug?
In reply to datastructures and out of memory errors by busunsl
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |