X-Git-Url: http://git.vpit.fr/?p=perl%2Fmodules%2Fautovivification.git;a=blobdiff_plain;f=README;h=0cb0b9eff4189c69aeb581b3c7550456b649f5b9;hp=a90d17bb487d2dd27003ef652960605942ba4d82;hb=be0d2bc6eefe4e2401f865deee64c9a45133b747;hpb=888b7a973b2a675f308fce212a5e10fee347af42 diff --git a/README b/README index a90d17b..0cb0b9e 100644 --- a/README +++ b/README @@ -2,7 +2,7 @@ NAME autovivification - Lexically disable autovivification. VERSION - Version 0.05 + Version 0.10 SYNOPSIS no autovivification; @@ -34,58 +34,83 @@ DESCRIPTION METHODS "unimport @opts" - Magically called when "no autovivification" is encountered. Enables the - features given in @opts, which can be : + Magically called when "no autovivification @opts" is encountered. + Enables the features given in @opts, which can be : * 'fetch' - Turn off autovivification for rvalue dereferencing expressions, such - as "$value = $hashref->{key}[$idx]{$field}", "keys - %{$hashref->{key}}" or "values %{$hashref->{key}}". Starting from - perl 5.11, it also covers "keys" and "values" on array references. + Turns off autovivification for rvalue dereferencing expressions, + such as : + + $value = $arrayref->[$idx] + $value = $hashref->{$key} + keys %$hashref + values %$hashref + + Starting from perl 5.11, it also covers "keys" and "values" on array + references : + + keys @$arrayref + values @$arrayref + 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' - Turn off autovivification for dereferencing expressions that are - parts of an "exists", such as "exists - $hashref->{key}[$idx]{$field}". '' is returned when the expression - would have autovivified. + Turns off autovivification for dereferencing expressions that are + parts of an "exists", such as : + + exists $arrayref->[$idx] + exists $hashref->{$key} + + '' is returned when the expression would have autovivified. * 'delete' - Turn off autovivification for dereferencing expressions that are - parts of a "delete", such as "delete $hashref->{key}[$idx]{$field}". + Turns off autovivification for dereferencing expressions that are + parts of a "delete", such as : + + delete $arrayref->[$idx] + delete $hashref->{$key} + "undef" is returned when the expression would have autovivified. * 'store' - Turn off autovivification for lvalue dereferencing expressions, such - 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). + Turns off autovivification for lvalue dereferencing expressions, + such as : + + $arrayref->[$idx] = $value + $hashref->{$key} = $value + for ($arrayref->[$idx]) { ... } + for ($hashref->{$key}) { ... } + function($arrayref->[$idx]) + function($hashref->{$key}) + + 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 $arrayref (resp. + $hashref) to already be an array (resp. hash) reference. * 'warn' - Emit a warning when an autovivification is avoided. + Emits a warning when an autovivification is avoided. * 'strict' - Throw an exception when an autovivification is avoided. + Throws an exception when an autovivification is avoided. Each call to "unimport" adds the specified features to the ones already in use in the current lexical scope. - When @opts is empty, it defaults to "qw/fetch exists delete/". + When @opts is empty, it defaults to "qw". "import @opts" - Magically called when "use autovivification" is encountered. Disables - the features given in @opts, which can be the same as for "unimport". + Magically called when "use autovivification @opts" is encountered. + Disables the features given in @opts, which can be the same as for + "unimport". Each call to "import" removes the specified features to the ones already in use in the current lexical scope. @@ -93,6 +118,17 @@ METHODS When @opts is empty, it defaults to restoring the original Perl autovivification behaviour. +CONSTANTS + "A_THREADSAFE" + True iff the module could have been built with thread-safety features + enabled. This constant only has a meaning with your perl is threaded ; + otherwise, it'll always be false. + + "A_FORKSAFE" + True iff this module could have been built with fork-safety features + enabled. This will always be true except on Windows where it's false for + perl 5.10.0 and below . + CAVEATS The pragma doesn't apply when one dereferences the returned value of an array or hash slice, as in "@array[$id]->{member}" or @@ -102,7 +138,10 @@ CAVEATS slices. DEPENDENCIES - perl 5.8. + perl 5.8.3. + + A C compiler. This module may happen to build with a C++ compiler as + well, but don't rely on it, as no guarantee is made in this regard. XSLoader (standard since perl 5.006). @@ -133,7 +172,7 @@ ACKNOWLEDGEMENTS Matt S. Trout asked for it. COPYRIGHT & LICENSE - Copyright 2009,2010 Vincent Pit, all rights reserved. + Copyright 2009,2010,2011 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.