Revision history for autovivification
+0.03 2009-06-23 22:20 UTC
+ + Add : Handle old-fashion dereferencing (like $$hashref{key}).
+ + Chg : Aliasing constructs (for ($x{foo}) { ... }) are now covered by
+ the 'store' category (and no longer the 'fetch' one). This is
+ because there's no way to know at compile-time if the alias
+ will be assigned to.
+ + Fix : Quadratic complexity at compile-time.
+ + Fix : Segfaults when dereferencing globals.
+ + Fix : Segfaults on big-endian systems.
+ + Tst : Really test plain arrays and hashes.
+ + Tst : Improved coverage.
+
0.02 2009-06-17 18:05 UTC
+ Add : 'fetch' also applies to aliasing ("for ($hashref->{key}) { }").
+ Fix : Don't segfault on "keys/values %$hashref", and don't vivify if
autovivification - Lexically disable autovivification.
VERSION
- Version 0.02
+ Version 0.03
SYNOPSIS
no autovivification;
* '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).