NAME

Hash::Dirty - Keep track of whether a hash is dirty or not

VERSION

Version 0.01

SYNOPSIS

use Hash::Dirty;

my %hash;
tie %hash, qw/Hash::Dirty/, { a => 1 };

(tied %hash)->is_dirty; # Nope, not dirty yet.

$hash{a} = 1;
(tied %hash)->is_dirty; # Still not dirty yet.

$hash{b} = 2;
(tied %hash)->is_dirty; # Yes, now it's dirty

(tied %hash)->dirty_keys; # ( b )

$hash{a} = "hello";
(tied %hash)->dirty_keys; # ( a, b )

(tied %hash)->dirty_values; # ( "hello", 2 )

(tied %hash)->dirty } # { a => 1, b => 1 }

(tied %hash)->reset;
(tied %hash)->is_dirty; # Nope, not dirty anymore.

$hash{c} = 3;
(tied %hash)->is_dirty; # Yes, dirty again.

# %hash is { a => "hello", b => 2, c => 3 }
(tied %hash)->dirty_slice } # { c => 3 }

# Alternatively:

use Hash::Dirty;

my $hash = Hash::Dirty::hash;
$hash = Hash::Dirty->new;

$hash->{a} = 1 # Etc., etc.

DESCRIPTION

Hash::Dirty will keep track of the dirty keys in a hash, letting you which values changed.

Currently, Hash::Dirty will only inspect a hash shallowly, that is, it does not deeply compare the contents of supplied values (say a HASH reference, ARRAY reference, or some other opaque object).

This module was inspired by DBIx::Class::Row

FUNCTIONS

hash( <hash> )

Creates a new Hash::Dirty object and returns the tied hash reference, per Hash::Dirty->new.

If supplied, will use <hash> as the storage (initializing the object accordingly)

sub hash { return __PACKAGE__->new(@_); }

METHODS

Hash::Dirty->>new( <hash> )

Creates a new Hash::Dirty object and returns the tied hash reference.

If supplied, will use <hash> as the storage (initializing the object accordingly)

$hash->is_dirty

Returns 1 if the hash is dirty at all, 0 otherwise

$hash->is_dirty ( <key> )

Returns 1 if <key> is dirty, 0 otherwise

$hash->is_dirty ( $key, $key, ..., )

Returns 1 if any <key> is dirty, 0 otherwise

$hash->reset

Resets the hash to non-dirty status

This method affects the dirtiness only, it does not erase or alter the hash in anyway

$hash->dirty

Returns a hash indicating which keys are dirty

In scalar context, returns a hash reference

$hash->dirty_slice

Returns a hash slice containg only the dirty keys and values

In scalar context, returns a hash reference

$hash->dirty_keys

Returns a list of dirty keys

$hash->dirty_values

Returns a list of dirty values

AUTHOR

Robert Krimen, <rkrimen at cpan.org>

BUGS

Please report any bugs or feature requests to bug-hash-dirty at rt.cpan.org, or through the web interface at http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Hash-Dirty. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.

SUPPORT

You can find documentation for this module with the perldoc command.

perldoc Hash::Dirty

You can also look for information at:

ACKNOWLEDGEMENTS

COPYRIGHT & LICENSE

Copyright 2007 Robert Krimen, all rights reserved.

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.