in reply to &&= vivify keys?

$x{a} &&= 1; is effectively the same as

$x{a} = $x{a} && 1;

which is in this case

$x{a} = undef && 1;

which is

$x{a} = undef;

Replies are listed 'Best First'.
Re^2: &&= vivify keys?
by oha (Friar) on Apr 18, 2012 at 09:10 UTC
    so true!

    not sure why, but i was expecting it to be the same as

    $x{a} && $x{a} = 1;
    thank you!

      Actually, you're closer to the truth than Eliya is. The assignment is indeed conditional.

      Aside from the syntax error from missing parens, the problems both yours and Eliya share are:

      • 1 is actually evaluated before anything else,
      • $x{a} is only evaluated once, and
      • $x{a} is (only) evaluated in lvalue context.

      See Re^2: &&= vivify keys?.