autovivification - Lexically disable autovivification.
VERSION
- Version 0.01
+ Version 0.03
SYNOPSIS
no autovivification;
* 'fetch'
Turn off autovivification for rvalue dereferencing expressions, such
- as "$value = $hashref->{key}[$idx]{$field}". "undef" is returned
- when the expression would have autovivified.
+ as "$value = $hashref->{key}[$idx]{$field}", "keys
+ %{$hashref->{key}}" or "values %{$hashref->{key}}". When the
+ expression would have autovivified, "undef" is returned for a plain
+ fetch, while "keys" and "values" return 0 in scalar context and the
+ empty list in list context.
* 'exists'
* 'store'
Turn off autovivification for lvalue dereferencing expressions, such
- as "$hashref->{key}[$idx]{$field} = $value". An exception is thrown
- if vivification is needed to store the value, which means that
+ as "$hashref->{key}[$idx]{$field} = $value" or "for
+ ($hashref->{key}[$idx]{$field}) { ... }". An exception is thrown if
+ vivification is needed to store the value, which means that
effectively you can only assign to levels that are already defined
(in the example, this would require "$hashref->{key}[$idx]" to
already be a hash reference).