in reply to Re^7: Array dereference in foreach()
in thread Array dereference in foreach()

What is this "special context similar to lvalue"? Is there any difference to usual lvalue other than not throwing exception in case of array-dereferencing undef?

However it is not special enough to work smoothly with dereferencing undef as hashref. This one throws exception.

my $a; foreach (keys %$a) { print "$_\n"; }

Replies are listed 'Best First'.
Re^9: Array dereference in foreach()
by choroba (Cardinal) on Nov 16, 2017 at 12:59 UTC
    keys doesn't propagate the outer context to its argument.
    #!/usr/bin/perl use strict; use warnings; my $x; 1 for %$x; print $x, "\n"; # HASH(0x26a18cd)

    ($q=q:Sq=~/;[c](.)(.)/;chr(-||-|5+lengthSq)`"S|oS2"`map{chr |+ord }map{substrSq`S_+|`|}3E|-|`7**2-3:)=~y+S|`+$1,++print+eval$q,q,a,
      I suspected that based on haukex comment below.

      Thank you guys!