Data::Alias isn't that heavyweight I think... I know it's a bit largeish module, but unlike tie() its use imposes virtually no overhead at runtime, and very little at compile time (no source filter).
in reply to Re^2: Type globs, strict, and lexical variables
in thread Type globs, strict, and lexical variables
And it solves your problem nicely, and probably more efficiently than anything involving typeglobs:
alias my @bar = @$foo;
UPDATE: It actually benchmarks faster than local *bar = $foo on my machine, with the benefit of being truly lexically scoped.