NAME

Data::OpenStruct::Deep - allows you to create data objects and set arbitrary attributes deeply

SYNOPSIS

use Data::OpenStruct::Deep;

my %hash = (
    foo => 1,
    bar => {
        baz => 2,
    },
);

my $struct = Data::OpenStruct::Deep->new(%hash);
my $foo = $struct->foo;      #=> 1
my $bar = $struct->bar;      #=> { baz => 2 }
my $baz = $struct->bar->baz; #=> 2

my $empty = Data::OpenStruct::Deep->new;
$empty->foo->bar->baz->quux('deeply'); # deeply, ok
print $empty->foo->bar;            #=> { baz => { quux => "deeply" } }
print $empty->foo->bar->baz->quux; #=> "deeply"

DESCRIPTION

This module allows you to create data objects and set arbitrary attributes.

It is like a hash with a different way to access the data. In fact, it is implemented with a hash and AUTOLOAD, and you can initialize it with one.

METHODS

new(%hash?)

to_hash

AUTHOR

NAKAGAWA Masaki <masaki@cpan.org>

LICENSE

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

SEE ALSO

Hash::AsObject, Object::AutoAccessor, Hash::Inflator,

http://www.ruby-doc.org/stdlib/libdoc/ostruct/rdoc/classes/OpenStruct.html