package C1; sub foo { my $self= shift; print "C1::foo called @_ :", join (',', keys %$self), "\n"; } package C2; sub foo { my $self= shift; print "C2::foo called @_ :", join (',', keys %$self), "\n"; } package main; my $x= bless \%hash, "C1"; my $y= bless \%hash, "C2"; $x->foo ("before"); $y->foo ("before"); %hash= ( key=>'value'); $x->foo ("after"); $y->foo ("after");