理系学生日記

おまえはいつまで学生気分なのか

忍者TOOLS

Data::AsObject

そういや、Data::AsObject っていうアクセサモジュールがでてました。

これがなかなか良い感じに使えそうです。

use strict;
use warnings;
use Data::AsObject;
use Data::Dumper;
use Perl6::Say;

sub p { print Dumper shift };

my $obj = dao {
    a => 'aaa',
    b => {
        c => 'ccc',
        d => [qw(d dd ddd)],
        e => {
            ee  => 'eee',
            a   => 'aaa',
        }
    }
};

say $obj->a;           # prints "aaa"
say $obj->b->d(1);     # prints "dd"
p        $obj->b->e;   # prints "$VAR1 = 'a';"
p scalar $obj->b->e;   #
# prints
# "$VAR1 = bless( {
#                  'a' => 'aaa',
#                  'ee' => 'eee'
#                }, 'Data::AsObject::Hash' );

Array Reference もきっちりアクセスできるってのが良いなって思いました。