hash-trait.pl

package MyClass;
use Moose;

has foo => (
    is => 'ro',
    isa => 'HashRef',
    traits => ['Hash'],
    lazy_build => 1,
    handles => {
        get_foo_keys => 'keys',
        find_foo_value => 'get',
    },
);

sub _build_foo {
    return {
        a => 1,
        b => 2,
    };
}

package main;
use feature qw/say/;

my $obj = MyClass->new;

say join ',', keys %{ $obj->foo };
say join ',', $obj->get_foo_keys;
say 'b=', $obj->find_foo_value('b');