Uri Guttman wrote:
> local *__ANON__ = \"subname" ;
> why do you think you need a glob there at all?

__ANON__ is taking advantage of semi-documented internals black magic,
so I stuck with what was shown in all the examples.

local $__ANON__ = ...

results in:

Global symbol "$__ANON__" requires explicit package name...

This sub is being parsed by eval at run time. It may be possible to get
creative with __PACKAGE__ to qualify the namespace...though this:
http://www.perlmonks.org/?node_id=417192
could make that rather challenging.


> ...it may work with setting the lexical scalar

I doubt it. I suspect caller() is doing something equivalent to:
  $subname ||= ${ __PACKAGE__ :: __ANON__ }

so __ANON__ needs to be in the symbol table for the package that's
currently active.


> warn "$__ANON__, ...\n" ;

I had previously tried that, and ran into the same "Global symbol ...
requires explicit package name..." error.

I'm sure I could work around this by calling caller() in each warn, or
setting a lexical from it, but I was curious to see if there was a
syntax that would work for using __ANON__ directly.

Seems like it wants something like:

    warn ${ __PACKAGE__ :: __ANON__ } ...

which wouldn't work (at least not with strict) for a number of reasons.

But I still don't get why "*" is showing up in the output.

 -Tom

-- 
Tom Metro
Venture Logic, Newton, MA, USA
"Enterprise solutions through open source."
Professional Profile: http://tmetro.venturelogic.com/

_______________________________________________
Boston-pm mailing list
[email protected]
http://mail.pm.org/mailman/listinfo/boston-pm

Reply via email to