sub TIEHASH
{
my $class = shift;
my $self = bless {},$class;
while(my($key,$value) = each(%ENV))
{
$self->set_node($key => $value);
}
return $self;
}
####
sub TIEHASH
{
my $class = shift;
my $self = $class->new;
while(my($key,$value) = each(%ENV))
{
$self->set_node($key => $value);
}
return $self;
}
####
package A;
use Moose;
has BBB => (
is => 'rw',
lazy => 1,
builder => '_build_BBB',
handles => [qw( get_node )],
);
sub _build_BBB
{
my $self = shift;
my $instance = tie(%ENV, 'BBB');
return $instance;
}
####
my $a = A->new;
print $a->get_node('TERM'), "\n";
####
use v5.14;
package MyRole {
use Moose::Role;
has nodes => (
traits => ['Hash'],
is => 'rw',
isa => 'HashRef[Item]',
handles => {
set_node => 'set',
get_node => 'get',
all_nodes => 'keys',
}
);
}
package BBB {
use Moose;
with 'MyRole';
}
package A {
use Moose;
has BBB => (
is => 'rw',
lazy => 1,
default => sub { BBB->new(nodes => \%ENV) },
handles => [qw( get_node )],
);
}
my $a = A->new;
say $a->get_node('TERM');