think the 5.x attribute mechanism should be extended to get the source name and ref, not just (sometimes) a glob.
I've just come across Attribute::Handlers::Prospective, yet another neat module from TheDamian, that allows you to do this. From the documentation:
If a lexical variable is given an attribute, there is no symbol table to which it belongs, so the symbol table argument ($_[1]) is set to the string 'LEXICAL(name)', where name is the name of the lexical (including its sigil). Likewise, ascribing an attribute to an anonymous subroutine results in a symbol table argument of 'ANON'.
Neat. Implemented with a source filter.