autovivification - Lexically disable autovivification.
VERSION
- Version 0.11
+ Version 0.18
SYNOPSIS
no autovivification;
"unimport"
no autovivification; # defaults to qw<fetch exists delete>
no autovivification qw<fetch store exists delete>;
- no autovivification 'warn';
- no autovivification 'strict';
+ no autovivification warn => @categories;
+ no autovivification strict => @categories;
Magically called when "no autovivification @opts" is encountered.
Enables the features given in @opts, which can be :
* 'warn'
- Emits a warning when an autovivification is avoided.
+ Emits a warning when an autovivification is avoided for the
+ categories specified in @opts.
+
+ Note that "no autovivification 'warn'" currently does nothing by
+ itself, in particular it does not make the default categories warn.
+ This behaviour may change in a future version of this pragma.
* 'strict'
- Throws an exception when an autovivification is avoided.
+ Throws an exception when an autovivification is avoided for the
+ categories specified in @opts.
+
+ Note that "no autovivification 'strict'" currently does nothing by
+ itself, in particular it does not make the default categories die.
+ This behaviour may change in a future version of this pragma.
Each call to "unimport" adds the specified features to the ones already
in use in the current lexical scope.
where it is false for perl 5.10.0 and below.
CAVEATS
+ Using this pragma will cause a slight global slowdown of any subsequent
+ compilation phase that happens anywere in your code - even outside of
+ the scope of use of "no autovivification" - which may become noticeable
+ if you rely heavily on numerous calls to "eval STRING".
+
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 is discouraged
context. If warnings are turned on, Perl will complain about one-element
slices.
+ Autovivifications that happen in code "eval"'d during the global
+ destruction phase of a spawned thread or pseudo-fork (the processes used
+ internally for the "fork" emulation on Windows) are not reported.
+
DEPENDENCIES
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).
+ XSLoader (standard since perl 5.6.0).
SEE ALSO
perlref.
perldoc autovivification
- Tests code coverage report is available at
- <http://www.profvince.com/perl/cover/autovivification>.
-
ACKNOWLEDGEMENTS
Matt S. Trout asked for it.
COPYRIGHT & LICENSE
- Copyright 2009,2010,2011,2012,2013 Vincent Pit, all rights reserved.
+ Copyright 2009,2010,2011,2012,2013,2014,2015,2017 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.