use strict; use warnings; { package EmployeeData; use Data::AsObject; use base 'Data::AsObject::Hash'; sub new { my $class = shift; my ($data) = @_; my $obj = Data::AsObject::dao ( $data ); bless $obj, $class; } sub foo { my $self = shift; my ($eidx) = @_; print STDERR $self->{$eidx}{age} . "\n"; } } my %employees = ( JS0114 => { name => 'Joe Soap', age => 56, }, JS1282 => { name => 'Joan Smith', age => 28, }, ); my $employees = EmployeeData->new(\%employees); bless $employees, 'EmployeeData'; print $employees{JS0114}{age} . "\n"; $employees->foo('JS1282'); print $employees->JS0114->age . "\n";