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.


In reply to Sometimes undef is initialized and sometimes not when hash values are fed to grep by leszekdubiel

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.