package TieTest; sub TIESCALAR { return bless({}, __PACKAGE__) } sub STORE { @_[0]->{VALUE} = uc(@_[1]) } sub FETCH { @_[0]->{VALUE} } use strict; use Tie::IxHash; my $h = {}; my $a; tie %$h, "Tie::IxHash"; tie $h->{FOO}, "TieTest"; $h->{FOO} = 'foo'; tie $a, "TieTest"; $a = 'bar'; print "After scalar tie ...\n"; print "\$h->{FOO} = $h->{FOO}\n"; print "\$a = $a\n"; print "\$a tied? ", tied($a), "\n"; print "h->{FOO} tied? ", tied($h->{FOO}), "\n"; tie_ref(\$a); tie_ref(\$h->{FOO}); $a = 'bar2'; $h->{FOO} = 'foo2'; print "After reference tie ...\n"; print "\$h->{FOO} = $h->{FOO}\n"; print "\$a = $a\n"; print "\$a tied? ", tied($a), "\n"; print "h->{FOO} tied? ", tied($h->{FOO}), "\n"; sub tie_ref { my $ref = shift; my $tie; $tie = tie $$ref, "TieTest"; print "tie for reference $ref = $tie\n"; } #### After scalar tie ... $h->{FOO} = foo $a = BAR $a tied? TieTest=HASH(0x13c8dc) h->{FOO} tied? tie for reference SCALAR(0x102efc) = TieTest=HASH(0x13c81c) tie for reference SCALAR(0x13c8d0) = TieTest=HASH(0x13c840) After reference tie ... $h->{FOO} = foo2 $a = BAR2 $a tied? TieTest=HASH(0x13c81c) h->{FOO} tied?