=head1 VERSION
-Version 0.26
+Version 0.27
=cut
our $VERSION;
BEGIN {
- $VERSION = '0.26';
+ $VERSION = '0.27';
}
=head1 SYNOPSIS
sub wizard {
croak 'Wrong number of arguments for wizard()' if @_ % 2;
my %opts = @_;
- my @cbs = qw/sig data get set len clear free/;
- push @cbs, 'copy' if MGf_COPY;
- push @cbs, 'dup' if MGf_DUP;
- push @cbs, 'local' if MGf_LOCAL;
- push @cbs, qw/fetch store exists delete/ if VMG_UVAR;
- my $ret = eval { _wizard(map $opts{$_}, @cbs) };
+ my @keys = qw/sig data get set len clear free/;
+ 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;
+ my $ret = eval { _wizard(map $opts{$_}, @keys) };
if (my $err = $@) {
$err =~ s/\sat\s+.*?\n//;
croak $err;
If you define a wizard with a C<free> callback and cast it on itself, this destructor won't be called because the wizard will be destroyed first.
-Using C<get> and C<clear> magics on hashes may cause segfaults.
+Using simultaneously C<get> and C<clear> magics on hashes may cause segfaults.
=head1 DEPENDENCIES