そういや、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 もきっちりアクセスできるってのが良いなって思いました。