Do you know where your variables are? PerlMonks

### Re^6: 5.24 -> 5.28 -- what has changed in autovivification?

by haukex (Bishop)
 on Apr 18, 2020 at 22:08 UTC Need Help??

I understand that there are only two options

In core Perl, yes (Update: actually, autovivification isn't even in the core). But choroba showed one possibility, and writing a single-purpose routine isn't difficult either (I've admittedly compacted it a bit):

```use warnings;
use strict;

sub dive { my \$r = shift;
\$r = ref \$r eq 'HASH' && exists \$\$r{\$_} ? \$\$r{\$_} : return for @_;
return \$r }

use Test::More;

my \$h = { a => { b => { c => { d => 'e' } } } };

is dive(\$h, qw/ a         /), \$h->{a};
is dive(\$h, qw/ a b       /), \$h->{a}{b};
is dive(\$h, qw/ a b c     /), \$h->{a}{b}{c};
is dive(\$h, qw/ a b c d   /), 'e';
is dive(\$h, qw/ a b c d e /), undef;
is dive(\$h, qw/ a x       /), undef;
is dive(\$h, qw/ a b x     /), undef;
is dive(\$h, qw/ a x y     /), undef;
is dive(\$h, qw/ a b x y   /), undef;
is dive(\$h, qw/ x         /), undef;
is dive(\$h, qw/ x y       /), undef;
is dive(\$h, qw/ x y z     /), undef;

is_deeply \$h, { a => { b => { c => { d => 'e' } } } };

done_testing;

Update: Both of the links in your post appear to be broken. I assume you were trying to link to perl5280delta and RT#127712.

Replies are listed 'Best First'.
Re^7: 5.24 -> 5.28 -- what has changed in autovivification?
by leszekdubiel (Scribe) on Apr 19, 2020 at 22:35 UTC
Thank you for code and making links good.

Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://11115752]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others avoiding work at the Monastery: (4)
As of 2022-01-22 11:18 GMT
Sections?
Information?
Find Nodes?
Leftovers?
Voting Booth?
In 2022, my preferred method to securely store passwords is:

Results (62 votes). Check out past polls.

Notices?