develooper Front page | perl.perl5.porters | Postings from March 2016

[perl #127712] defined on HashofHash defines an element in the hash

Thread Previous | Thread Next
From:
Tony Cook via RT
Date:
March 14, 2016 22:31
Subject:
[perl #127712] defined on HashofHash defines an element in the hash
Message ID:
rt-4.0.18-18686-1457994661-403.127712-15-0@perl.org
On Mon Mar 14 09:45:35 2016, phberninger@gmx.net wrote:
> Checking with defined for an Hash of Hash element defines the element
> in the
> hash, instead of returning undefined:The following code will reproduce
> it: perl
> -e 'if(defined($foo{"a"}{"b"})){ print "not
> defined\n";}if(defined($foo{"a"})){
> print "ERROR? now defined?\n";} ' I hope it is not a feature. tested
> with perl
> 5.20.2 under Linux

This is a known problem[1], and is difficult to fix because the change would break existing code.

You can avoid this behaviour by using the autovivication module from CPAN.

Tony

[1] that autovivication doesn't always respect lvalue vs rvalue

---
via perlbug:  queue: perl5 status: new
https://rt.perl.org/Ticket/Display.html?id=127712

Thread Previous | Thread Next


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About