]> git.vpit.fr Git - perl/modules/autovivification.git/blobdiff - README
Fix cloning of hints object when the require propagation workaround is enabled
[perl/modules/autovivification.git] / README
diff --git a/README b/README
index 88c204c741053cbce03bceb198849f31fe385161..a90d17bb487d2dd27003ef652960605942ba4d82 100644 (file)
--- a/README
+++ b/README
@@ -2,7 +2,7 @@ NAME
     autovivification - Lexically disable autovivification.
 
 VERSION
-    Version 0.02
+    Version 0.05
 
 SYNOPSIS
         no autovivification;
@@ -41,10 +41,11 @@ METHODS
 
         Turn off autovivification for rvalue dereferencing expressions, such
         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.
+        %{$hashref->{key}}" or "values %{$hashref->{key}}". Starting from
+        perl 5.11, it also covers "keys" and "values" on array references.
+        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'
 
@@ -62,8 +63,9 @@ METHODS
     *   '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).
@@ -91,6 +93,14 @@ METHODS
     When @opts is empty, it defaults to restoring the original Perl
     autovivification behaviour.
 
+CAVEATS
+    The pragma doesn't apply when one dereferences the returned value of an
+    array or hash slice, as in "@array[$id]->{member}" or
+    @hash{$key}->{member}. This syntax is valid Perl, yet it's discouraged
+    as the slice is here useless since the dereferencing enforces scalar
+    context. If warnings are turned on, Perl will complain about one-element
+    slices.
+
 DEPENDENCIES
     perl 5.8.
 
@@ -123,7 +133,7 @@ ACKNOWLEDGEMENTS
     Matt S. Trout asked for it.
 
 COPYRIGHT & LICENSE
-    Copyright 2009 Vincent Pit, all rights reserved.
+    Copyright 2009,2010 Vincent Pit, all rights reserved.
 
     This program is free software; you can redistribute it and/or modify it
     under the same terms as Perl itself.