Revision history for Variable-Magic
+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.
+ Thanks Clinton Gormley for reporting.
+ + Fix : Exceptions thrown from inside a 'free' callback are now always
+ consistently propagated outside of the callback. They used to
+ be lost when the 'free' callback was invoked at the end of an
+ eval block or string.
+ + Fix : The 'reset RMG flag' workaroundn used to allow wizards with
+ both 'uvar' and 'clear' magics to be cast onto a hash, has been
+ made thread-safe.
+
0.50 2012-06-24 23:00 UTC
+ Fix : Less memory is leaked when a wizard is freed during global
destruction, or when an exception is thrown from a 'free'
Variable::Magic - Associate user-defined magic to variables from Perl.
VERSION
- Version 0.50
+ Version 0.51
SYNOPSIS
use Variable::Magic qw<wizard cast VMG_OP_INFO_NAME>;
the correct "Tie::Std*" class and overriding individual methods in
your own class.
+ * Magic is multivalued.
+
+ You can safely apply different kinds of magics to the same variable,
+ and each of them will be invoked successively.
+
* Magic is type-agnostic.
The same magic can be applied on scalars, arrays, hashes, subs or
globs. But the same hook (see below for a list) may trigger
differently depending on the the type of the variable.
- * Magic is invisible at the Perl level.
+ * Magic is invisible at Perl level.
Magical and non-magical variables cannot be distinguished with
"ref", "tied" or another trick.
* *free*
- This magic is called when an object is destroyed as the result of
- the variable going out of scope (but not when the variable is
- undefined).
+ This magic is called when a variable is destroyed as the result of
+ going out of scope (but not when it is undefined). It behaves
+ roughly like Perl object destructors (i.e. "DESTROY" methods),
+ except that exceptions thrown from inside a *free* callback will
+ always be propagated to the surrounding code.
* *copy*