${ *{${ns} . '::foo'} } = $cram;
####
${ $::{$ns.'::'}{foo} } = $cram;
####
#!/usr/bin/perl -l
use strict;
use warnings;
my $ns = 'Teddy::';
${ $::{$ns}{foo} } = 'cheese';
print '$Teddy::foo: ', $Teddy::foo;
# or the other way round
$Teddy::foo = 'bar';
print '${ $::{$ns}{foo} }: ', ${ $::{$ns}{foo} };
__END__
$Teddy::foo: cheese
${ $::{$ns}{foo} }: bar
####
print grep /Teddy/, keys %::; # Teddy::
print $::{'Teddy::'}; # *main::Teddy::
print keys %{$::{'Teddy::'}}; # foo
print $::{'Teddy::'}{foo}; # *Teddy::foo
####
$::{'Teddy::'}{foo} = \'cheese';
print $Teddy::foo; # cheese
$Teddy::foo = 'bar'; # "Modification of a read-only value attempted at ..."