The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
NAME

    Object::Releaser -- Remove properties from an object when the releaser
    goes out of scope.

SYNOPSIS

    Remove all hash reference elements:

     $object = {a=>1, b=>2, c=>3};
     $releaser = Object::Releaser->new($object);
     undef $releaser;
     # object still exists but has no elements

    Remove only hash reference elements a and b:

     $object = {a=>1, b=>2, c=>3};
     $releaser = Object::Releaser->new($object);
     $releaser->set_keys(qw{a b});
     undef $releaser;
     # object has element c but not a and b

    Cancel the release, don't release anything:

     $object = {a=>1, b=>2, c=>3};
     $releaser = Object::Releaser->new($object);
     $releaser->dismiss();
     undef $releaser;
     # object is not changed

DESCRIPTION

    Object::Releaser provides the ability to delete all or some of the
    elements from a hash reference when the releaser goes out of scope.
    This is done by creating the releaser, passing in the object to be
    released as the sole argument:

     $releaser = Object::Releaser->new($object);

    When $releaser goes out of scope, all elements in $object are deleted.

    If you only want specific elements deleted, set those elements with
    $releaser->set_keys(). So, for example, the following lines set the
    releaser to delete elements a and b from the object, but not any other
    elements:

     $releaser = Object::Releaser->new($object);
     $releaser->set_keys(qw{a b});

ALTERNATIVES

    Object::Destroyer provides very similar functionality. It provides for
    more complex situations and has greater flexibility. Object::Releaser
    fulfills one simple function: deleting elements from a hashref.

    If you just want to avoid circular references, you might want to use
    weaken in the Scalar::Util module (which is built into Perl as of
    version 5.6.0).

INSTALLATION

    Array::OneOf can be installed with the usual routine:

     perl Makefile.PL
     make
     make test
     make install

METHODS

 new

    Creates an Object::Releaser object. The single argument is the object
    to be released when $releaser goes out of scope:

     $releaser = Object::Releaser->new($object);

    If you do nothing else, then all elements in $object will be deleted
    when $releaser goes out of scope.

 set_keys

    Tells the releaser to only delete specified keys from the object. For
    example, the code:

     $releaser->set_keys(qw{a b});

    sets the releaser so that only elements a and b are deleted.

 delete_all

    delete_all does the opposite of set_keys: it sets the releaser to
    delete all keys from the target object. Use delete_all if you
    previously used set_keys to set deletion for specific keys, but now
    want to go back to deleting all keys:

     $releaser = Object::Releaser->new($object);
     $releaser->set_keys(qw{a b});
     $releaser->delete_all();

TERMS AND CONDITIONS

    Copyright (c) 2013 by Miko O'Sullivan. All rights reserved. This
    program is free software; you can redistribute it and/or modify it
    under the same terms as Perl itself. This software comes with NO
    WARRANTY of any kind.

AUTHOR

    Miko O'Sullivan miko@idocs.com

VERSION

    Version 0.10 February 17, 2013

      Initial release

    Version 0.11 February 21, 2013

      Fixed bug: incorrect number of test in test plan.