in reply to Creating pointers in a HoH declaration

Here is a somewhat clunky delayed evaluation trick:
my %f; %f=(One=>1, two=>sub{$f{One}} ); # Flatten all the subs .. ref $f{$_} eq 'CODE' and $f{$_}=$f{$_}->() for keys %f; print Dumper \%f; # All populated
Output:
$VAR1 = { 'two' => 1, 'One' => 1 };
Update: Verified that this works fine (i.e. 'One' and 'two' point to the same data) for HOH - i.e for:
my %f; %f=(One=>{this=>'that'}, two=>sub{$f{One}});

        This is not an optical illusion, it just looks like one.