my $ret = $obj->do_something($with, $these, $args); #### package Widget; use overload '%{}' => sub { my $self = shift; tie my %h, __PACKAGE__, $self; \%h; }; #### my $widg = Widget->new; print "$widg->{name} is the same as " . $widg->name; #### sub TIEHASH { my ($pkg, $object) = @_; return $object; } sub FETCH { my ($self, $key) = @_; $self->$key; }