NAME

Data::Hive::Store::Hash::Nested - store a hive in nested hashrefs

VERSION

version 1.015

DESCRIPTION

This is a simple store, primarily for testing, that will store hives in nested hashrefs. All hives are represented as hashrefs, and their values are stored in the entry for the empty string.

So, we could do this:

my $href = {};

my $hive = Data::Hive->NEW({
  store_class => 'Hash',
  store_args  => [ $href ],
});

$hive->foo->SET(1);
$hive->foo->bar->baz->SET(2);

We would end up with $href containing:

{
  foo => {
    ''  => 1,
    bar => {
      baz => {
        '' => 2,
      },
    },
  },
}

Using empty keys results in a bigger, uglier dump, but allows a given hive to contain both a value and subhives. Please note that this is different behavior compared with earlier releases, in which empty keys were not used and it was not legal to have a value and a hive at a given path. It is possible, although fairly unlikely, that this format will change again. The Hash store should generally be used for testing things that use a hive, as opposed for building hashes that will be used for anything else.

PERL VERSION

This library should run on perls released even a long time ago. It should work on any version of perl released in the last five years.

Although it may work on older versions of perl, no guarantee is made that the minimum required version will not be increased. The version may be increased for any reason, and there is no promise that patches will be accepted to lower the minimum required perl.

METHODS

new

my $store = Data::Hive::Store::Hash->new(\%hash);

The only argument expected for new is a hashref, which is the hashref in which hive entries are stored.

If no hashref is provided, a new, empty hashref will be used.

hash_store

This method returns the hashref in which things are being used. You should not alter its contents!

name

The name returned by the Hash store is a string, potentially suitable for eval-ing, describing a hash dereference of a variable called $STORE.

"$STORE->{foo}->{bar}"

This is probably not very useful. It might be replaced with something else in the future.

AUTHORS

  • Hans Dieter Pearcey <hdp@cpan.org>

  • Ricardo Signes <cpan@semiotic.systems>

COPYRIGHT AND LICENSE

This software is copyright (c) 2006 by Hans Dieter Pearcey.

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