use strict; use warnings; use Data::Dumper; use Tie::Hash (); package MyHash; use base 'Tie::StdHash'; sub TIEHASH { my $storage = bless {}, shift; warn "New hash created, stored in $storage.\n"; return $storage; } sub STORE { my $class = shift; warn "In STORE\n"; return $class->SUPER::STORE(@_); } package MyObj; sub new { my $class = shift; my %h; tie %h, 'MyHash'; return bless \%h, $class; } sub do_something { print "In method do_something\n"; } package main; my $g = MyObj->new(); $g->do_something(); $g->{'key'} = 'value'; print Dumper($g), "\n";