##
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;
}