http://www.perlmonks.org?node_id=11112778

leszekdubiel has asked for the wisdom of the Perl Monks concerning the following question:

Hello Perl Monks!

In perl5 there is a strange behaviour that hash values are sometimes initialized to undef and sometimes not. See this example:

#!/usr/bin/perl -CSDA use utf8; use Modern::Perl; no warnings qw{uninitialized numeric}; use Data::Dumper; my %h = (a => 'alfa', b => 'beta'); print "\n\nfirst try:\n"; print "\t>>$h{a}<<\n"; print "\t>>$h{XXX}<<\n"; print "\t>>$h{b}<<\n"; print "after first:\n", Dumper(\%h); print "\n\nsecond try:\n"; print map { "\t>>$_<<\n" } $h{a}, "mytext" . $h{YYY} . "after", $h{b}; print "after second:\n", Dumper(\%h); print "\n\nthird try:\n"; print map { "\t>>$_<<\n" } $h{a}, $h{ZZZ}, $h{b}; print "after third:\n", Dumper(\%h); ===================== OUTPUT: first try: >>alfa<< >><< >>beta<< after first: $VAR1 = { 'a' => 'alfa', 'b' => 'beta' }; second try: >>alfa<< >>mytextafter<< >>beta<< after second: $VAR1 = { 'a' => 'alfa', 'b' => 'beta' }; third try: >>alfa<< >><< >>beta<< after third: $VAR1 = { 'b' => 'beta', 'ZZZ' => undef, <<<<<<------------ ?????? 'a' => 'alfa' };

Hash values are only used to form strings. Why sometimes they got initialized to "undef" and sometimes not? Does Raku (Perl6) has similiar behaviour?

This is what I asked in autovivification context: https://www.perlmonks.org/?node_id=11110437.