Revision history for Variable-Magic
+0.52 2012-11-05 02:30 UTC
+ + Add : The new constant VMG_COMPAT_SCALAR_NOLEN evaluates to true
+ when your perl does not call 'len' magic for scalars, which
+ is the case for perl 5.17.4 and above.
+ This fixes RT #80388.
+ + Tst : t/35-stash.t has been taught about perl 5.17.4.
+ + Tst : Author tests overhaul.
+
0.51 2012-08-18 15:00 UTC
+ Fix : It is now safe to call dispell() from inside 'free', 'copy' and
'uvar' callbacks to dispell the magic currently in use.
Variable::Magic - Associate user-defined magic to variables from Perl.
VERSION
- Version 0.51
+ Version 0.52
SYNOPSIS
use Variable::Magic qw<wizard cast VMG_OP_INFO_NAME>;
* *len*
- This magic only applies to scalars and arrays, and is triggered when
- the 'size' or the 'length' of the variable has to be known by Perl.
- This is typically the magic involved when an array is evaluated in
- scalar context, but also on array assignment and loops ("for", "map"
- or "grep"). The length is returned from the callback as an integer.
+ This magic only applies to arrays (though it used to also apply to
+ scalars), and is triggered when the 'size' or the 'length' of the
+ variable has to be known by Perl. This is typically the magic
+ involved when an array is evaluated in scalar context, but also on
+ array assignment and loops ("for", "map" or "grep"). The length is
+ returned from the callback as an integer.
+
+ Starting from perl 5.12, this magic is no longer called by the
+ "length" keyword, and starting from perl 5.17.4 it is also no longer
+ called for scalars in any situation, making this magic only
+ meaningful on arrays. You can use the constants
+ "VMG_COMPAT_SCALAR_LENGTH_NOLEN" and "VMG_COMPAT_SCALAR_NOLEN" to
+ see if this magic is available for scalars or not.
* *clear*
True for perls that don't call *len* magic when taking the "length" of a
magical scalar.
+ "VMG_COMPAT_SCALAR_NOLEN"
+ True for perls that don't call *len* magic on scalars. Implies
+ "VMG_COMPAT_SCALAR_LENGTH_NOLEN".
+
"VMG_COMPAT_ARRAY_PUSH_NOLEN"
True for perls that don't call *len* magic when you push an element in a
magical array. Starting from perl 5.11.0, this only refers to pushes in