in reply to returning tied array

The reason you give for not working with an alias using a package variable is not valid. You can say:
our @F; *F = TieVariable;

You can also create lexical aliases using Lexical::Alias.