#!/usr/bin/perl -w use strict; use Data::Dumper; { package foo; use Tie::IxHash; use Data::Dumper; tie(my %h, 'Tie::IxHash', qw(one two three four)); sub new { my %newh = %h; bless { val => \%newh } } sub val : lvalue { my $r = \$_[0]->{val}{one}; $$r } } use Devel::Peek; my $obj = foo->new; Dump( $obj->{val}->{one} ); # dies here $obj->val = "foo"; warn Dumper($obj);