Variable::Magic - Associate user-defined magic to variables from Perl.
VERSION
- Version 0.10
+ Version 0.15
SYNOPSIS
use Variable::Magic qw/wizard cast dispell/;
*p14416* : 'copy' and 'dup' magic.
5.9.3
- 'len' magic is no longer called when pushing an element into a magic
- array.
+ *p25854* : 'len' magic is no longer called when pushing an element into
+ a magic array.
*p26569* : 'local' magic.
5.9.5
*p31473* : 'clear' magic wasn't invoked when undefining an array. The
bug is fixed as of this version.
+ 5.10.0
+ Since "PERL_MAGIC_uvar" is uppercased, "hv_magic_check()" triggers
+ 'copy' magic on hash stores for (non-tied) hashes that also have 'uvar'
+ magic.
+
+ 5.11.x
+ *p32969* : 'len' magic is no longer invoked when calling "length" with a
+ magical scalar.
+
CONSTANTS
"SIG_MIN"
The minimum integer used as a signature for user-defined magic.
"VMG_COMPAT_ARRAY_UNDEF_CLEAR"
True for perls that call 'clear' magic when undefining magical arrays.
- "VMG_COMPAT_HASH_LISTASSIGN_COPY"
- True for perls that call 'copy' magic on list assignments. Implies that
- "MGf_COPY" is true.
+ "VMG_COMPAT_SCALAR_LENGTH_NOLEN"
+ True for perls that don't call 'len' magic when taking the "length" of a
+ magical scalar.
FUNCTIONS
"wizard"
len => sub { my ($ref, $data, $len) = @_; ... ; return $newlen; },
clear => sub { my ($ref, $data) = @_; ... },
free => sub { my ($ref, $data) = @_, ... },
- copy => sub { my ($ref, $data, $elt) = @_; ... },
+ copy => sub { my ($ref, $data, $key, $elt) = @_; ... },
local => sub { my ($ref, $data) = @_; ... },
fetch => sub { my ($ref, $data, $key) = @_; ... },
store => sub { my ($ref, $data, $key) = @_; ... },
reference to the magic object and $_[1] is always the private data
(or "undef" when no private data constructor was supplied). In the
special case of "len" magic and when the variable is an array, $_[2]
- contains its normal length. "copy" magic receives the current
- element (i.e. the value) in $_[2]. $_[2] is also the current key in
- "fetch", "store", "exists" and "delete" callbacks.
+ contains its normal length. $_[2] is the current key in "copy",
+ "fetch", "store", "exists" and "delete" callbacks, although for
+ "copy" it may just be a copy of the actual key so it's useless to
+ (for example) cast magic on it. "copy" magic also receives the
+ current element (i.e. the value) in $_[3].
# A simple scalar tracer
my $wiz = wizard get => sub { print STDERR "got ${$_[0]}\n" },
perltie and overload for other ways of enhancing objects.
AUTHOR
- Vincent Pit, "<perl at profvince.com>"
+ Vincent Pit, "<perl at profvince.com>", <http://www.profvince.com>.
- You can contact me by mail or on #perl @ FreeNode (Prof_Vince).
+ You can contact me by mail or on #perl @ FreeNode (vincent or
+ Prof_Vince).
BUGS
Please report any bugs or feature requests to "bug-variable-magic at
perldoc Variable::Magic
+ Tests code coverage report is available at
+ <http://www.profvince.com/perl/cover/Variable-Magic>.
+
COPYRIGHT & LICENSE
Copyright 2007-2008 Vincent Pit, all rights reserved.