in reply to Re^2: these aren't locals, but they seem to act like it
in thread these aren't locals, but they seem to act like it

It'd be sure nice to have such a feature. :-/
Well, I think you can, because eval STRING behaves pretty much this way. So, you can use
$ref = eval "\\\$$name";
to get a real reference of the variable you know the name of — a reference, not the value, so you're actually able to change the value. Try it:
#! perl -w use strict; my $ref; my $name = 'x'; our $x; $x = 'global'; $ref = eval "\\\$$name"; print "\$$name = '$$ref'\n"; { my $x = 'lexical'; $ref = eval "\\\$$name"; print "\$$name = '$$ref'\n"; { my $x = 'nested lexical'; $ref = eval "\\\$$name"; print "\$$name = '$$ref'\n"; } }
Result:
$x = 'global' $x = 'lexical' $x = 'nested lexical'

Caution: You do realize that you're skating on very thin ice, do you? In other words, only use this feature to help you debug what is going on (even though I'm not sure how it could help), do not ever use this in production code to reach for any variable that can be used anywhere in your code.

But, for debugging purposes, it still won't work to get at variable you don't have normal access to, such as lexicals in a sub that calls your sub. For that purpose, there is PadWalker.