in reply to Re^2: Strange behaviour of interpreter when dereferencing an undefined value
in thread Strange behaviour of interpreter when dereferencing an undefined value

the expression %{ $a } isn't in lvalue context.

Yes, it is.

$ perl -E'sub f { $_[0] = 'abc' } f($x); say $x' abc $ perl -E'sub f { $_[1] = 'abc' } $h{a}=undef; f(%h); say $h{a}' abc

Perl arguments are always passed by reference.

Also autovivification doesn't appear only in lvalue context

I didn't say otherwise.