I'm not 100% sure what you're asking, at least partly because I've never used the Apache::Request module, but if all you want to do is store values in a hash, you can do that with a straightforward normal assignment operation. The fact that the hash is nested inside another data structure doesn't matter:
my %foo;
my $bar = { key1 => "value 1", };
$foo{key2} = "value 2";
$$bar{key3} = "value 3";
$$bar{key4} = { key5 => "value 5", };
$$bar{key4}->{key6} = "value 6";
$$bar{key4}{key7} = "value 7"; # simpler syntax
use Data::Dumper;
print Dumper( \%foo, \$bar );
If there's something different going on that I've missed (e.g., a tied hash), or something more you wanted to know, you might try to clarify your question. As it stands now, this is the only answer I could come up with.