X-Git-Url: http://git.vpit.fr/?a=blobdiff_plain;f=lib%2FVariable%2FMagic.pm;h=79ca7e9cc7164d945e6a55a24b553db243b9d5e0;hb=5b519e2dbddefbc9195f6a7cc49db883d08fa8d8;hp=70dff80801e7c27f31e022c022b759b4c475042d;hpb=c475e1988f3033a818329f04d2e86acbc3c53632;p=perl%2Fmodules%2FVariable-Magic.git diff --git a/lib/Variable/Magic.pm b/lib/Variable/Magic.pm index 70dff80..79ca7e9 100644 --- a/lib/Variable/Magic.pm +++ b/lib/Variable/Magic.pm @@ -1,6 +1,6 @@ package Variable::Magic; -use 5.007003; +use 5.008; use strict; use warnings; @@ -13,13 +13,13 @@ Variable::Magic - Associate user-defined magic to variables from Perl. =head1 VERSION -Version 0.27 +Version 0.29 =cut our $VERSION; BEGIN { - $VERSION = '0.27'; + $VERSION = '0.29'; } =head1 SYNOPSIS @@ -278,19 +278,20 @@ BEGIN { =head2 C - wizard sig => ..., - data => sub { ... }, - get => sub { my ($ref, $data) = @_; ... }, - set => sub { my ($ref, $data) = @_; ... }, - len => sub { my ($ref, $data, $len) = @_; ... ; return $newlen; }, - clear => sub { my ($ref, $data) = @_; ... }, - free => sub { my ($ref, $data) = @_, ... }, - copy => sub { my ($ref, $data, $key, $elt) = @_; ... }, - local => sub { my ($ref, $data) = @_; ... }, - fetch => sub { my ($ref, $data, $key) = @_; ... }, - store => sub { my ($ref, $data, $key) = @_; ... }, - exists => sub { my ($ref, $data, $key) = @_; ... }, - delete => sub { my ($ref, $data, $key) = @_; ... } + wizard sig => ..., + data => sub { ... }, + get => sub { my ($ref, $data) = @_; ... }, + set => sub { my ($ref, $data) = @_; ... }, + len => sub { my ($ref, $data, $len) = @_; ... ; return $newlen; }, + clear => sub { my ($ref, $data) = @_; ... }, + free => sub { my ($ref, $data) = @_, ... }, + copy => sub { my ($ref, $data, $key, $elt) = @_; ... }, + local => sub { my ($ref, $data) = @_; ... }, + fetch => sub { my ($ref, $data, $key) = @_; ... }, + store => sub { my ($ref, $data, $key) = @_; ... }, + exists => sub { my ($ref, $data, $key) = @_; ... }, + delete => sub { my ($ref, $data, $key) = @_; ... }, + copy_key => $bool This function creates a 'wizard', an opaque type that holds the magic information. It takes a list of keys / values as argument, whose keys can be : @@ -324,21 +325,21 @@ Other arguments are specific to the magic hooked : =over 8 -=item - +=item * C -When the variable is an array, C<$_[2]> contains the normal length. -The callback is also expected to return the new scalar or array length. +When the variable is an array or a scalar, C<$_[2]> contains the non-magical length. +The callback can return the new scalar or array length to use, or C to default to the normal length. -=item - +=item * C C<$_[2]> is a either a copy or an alias of the current key, which means that it is useless to try to change or cast magic on it. C<$_[3]> is an alias to the current element (i.e. the value). -=item - +=item * C, C, C and C @@ -461,11 +462,9 @@ 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. -Using simultaneously C and C magics on hashes may cause segfaults. - =head1 DEPENDENCIES -L 5.7.3. +L 5.8. L (standard since perl 5), L (standard since perl 5.006).