X-Git-Url: http://git.vpit.fr/?a=blobdiff_plain;f=lib%2FVariable%2FMagic.pm;h=141d966ab9f90ebe443deee6ba6dab8be1c3f2f5;hb=refs%2Ftags%2Fv0.46;hp=c10a8057505178e62918bfae94d7bad51df0f927;hpb=06f02edd22171ea5cdb1afca36e74ec65b772609;p=perl%2Fmodules%2FVariable-Magic.git diff --git a/lib/Variable/Magic.pm b/lib/Variable/Magic.pm index c10a805..141d966 100644 --- a/lib/Variable/Magic.pm +++ b/lib/Variable/Magic.pm @@ -11,18 +11,18 @@ Variable::Magic - Associate user-defined magic to variables from Perl. =head1 VERSION -Version 0.44 +Version 0.46 =cut our $VERSION; BEGIN { - $VERSION = '0.44'; + $VERSION = '0.46'; } =head1 SYNOPSIS - use Variable::Magic qw/wizard cast VMG_OP_INFO_NAME/; + use Variable::Magic qw; { # A variable tracer my $wiz = wizard set => sub { print "now set to ${$_[0]}!\n" }, @@ -159,7 +159,7 @@ It is available on your perl iff C is true. =back -The following actions only apply to hashes and are available iff C is true. +The following actions only apply to hashes and are available iff L is true. They are referred to as C magics. =over 4 @@ -301,11 +301,11 @@ sub wizard { my %opts = @_; - my @keys = qw/data op_info get set len clear free/; + my @keys = qw; push @keys, 'copy' if MGf_COPY; push @keys, 'dup' if MGf_DUP; push @keys, 'local' if MGf_LOCAL; - push @keys, qw/fetch store exists delete copy_key/ if VMG_UVAR; + push @keys, qw if VMG_UVAR; my ($wiz, $err); { @@ -381,6 +381,8 @@ Evaluates to true iff the 'local' magic is available. =head2 C When this constant is true, you can use the C callbacks on hashes. +Initial VMG_UVAR capability was introduced in perl 5.9.5, with a fully functional implementation +shipped with perl 5.10.0. =head2 C @@ -438,7 +440,7 @@ It is similar to using inside-out objects, but without the drawback of having to { package Magical::UserData; - use Variable::Magic qw/wizard cast getdata/; + use Variable::Magic qw; my $wiz = wizard data => sub { \$_[1] }; @@ -573,12 +575,12 @@ All the constants are also only exported on request, either individually or by t =cut -use base qw/Exporter/; +use base qw; our @EXPORT = (); our %EXPORT_TAGS = ( - 'funcs' => [ qw/wizard cast getdata dispell/ ], - 'consts' => [ qw/ + 'funcs' => [ qw ], + 'consts' => [ qw< MGf_COPY MGf_DUP MGf_LOCAL VMG_UVAR VMG_COMPAT_ARRAY_PUSH_NOLEN VMG_COMPAT_ARRAY_PUSH_NOLEN_VOID VMG_COMPAT_ARRAY_UNSHIFT_NOLEN_VOID @@ -588,7 +590,7 @@ our %EXPORT_TAGS = ( VMG_PERL_PATCHLEVEL VMG_THREADSAFE VMG_FORKSAFE VMG_OP_INFO_NAME VMG_OP_INFO_OBJECT - / ], + > ], ); our @EXPORT_OK = map { @$_ } values %EXPORT_TAGS; $EXPORT_TAGS{'all'} = [ @EXPORT_OK ]; @@ -600,10 +602,15 @@ The only way to address this would be to return a reference. If you define a wizard with a C callback and cast it on itself, this destructor won't be called because the wizard will be destroyed first. +In order to define magic on hash members, you need at least L 5.10.0 (see L) + =head1 DEPENDENCIES L 5.8. +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. + L (standard since perl 5), L (standard since perl 5.006). Copy tests need L (standard since perl 5.005) and L (since 5.002). @@ -640,7 +647,7 @@ Tests code coverage report is available at L