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 #### $VAR1 = { 'two' => 1, 'One' => 1 }; #### my %f; %f=(One=>{this=>'that'}, two=>sub{$f{One}});