my @array = (); #### $array[1] = { val => "The initial value for 1", one => 'undef' }; $array[0] = { val => "The initial value for 0", one => \$array[1]{val} }; $array[2] = { val => "The initial value for 2", one => \$array[1]{val} }; $array[3] = { val => "The initial value for 3", one => \$array[1]{val} }; #### for my $i (0 .. 3) { print "# $array[$i]{one}\n"; if (ref $array[$i]{one} eq 'SCALAR') { print "#\t${$array[$i]{one}}\n"; } } #### # SCALAR(0x8114938) # The initial value for 1 # undef # SCALAR(0x8114938) # The initial value for 1 # SCALAR(0x8114938) # The initial value for 1 #### for my $i (0 .. 3) { $array[$i] = { val => rand(time)%3, one => \$array[1]{val} }; } #### print "\n"; for my $i (0 .. 3) { print "# $array[$i]{one}\n"; if (ref $array[$i]{one} eq 'SCALAR') { print "# \t${$array[$i]{one}}\n"; } } #### # SCALAR(0x8114938) # The initial value for 1 # SCALAR(0x8114938) # The initial value for 1 # SCALAR(0x81adcd8) # 0 # SCALAR(0x81adcd8) # 0