$Teddy::foo = 'cash';
####
use strict;
use warnings;
use feature 'say';
{
package Teddy;
}
package main;
no strict 'refs';
my $ns = 'Teddy';
my $glob = *{"${ns}\::foo"};
say ' $glob: ', $glob;
say '$Teddy::foo: ', $Teddy::foo;
my $cram = 'cheese';
say ' $cram: ', $cram;
${ *{"${ns}\::foo"} } = $cram;
say '$Teddy::foo: ', $Teddy::foo;
my $yank = ${ *{"${ns}\::foo"} };
say ' $yank: ', $yank;
__DATA__
Output:
$glob: *Teddy::foo
Use of uninitialized value $Teddy::foo in say...
$Teddy::foo:
$cram: cheese
$Teddy::foo: cheese
$yank: cheese
__END__
####
no strict 'refs'; # disable complaint about symbolic reference
no warnings 'once'; # disable complaint about var only used once
${ *{"${ns}\::foo"} } = $cram;