http://www.perlmonks.org?node_id=400995


in reply to Naming Anonymous Subs

Any reason to not just shove the anonymous sub reference into the appropriate slot in the glob in the global namespace? Not that I'm against XS by any means, but:
   *Foo::Bar::baz{CODE} = $coderef
seems fairly straightforward...

Replies are listed 'Best First'.
Re^2: Naming Anonymous Subs
by blokhead (Monsignor) on Oct 20, 2004 at 22:21 UTC
    There are at least two reasons that I can think of..
    1. caller:
      sub whoami { print +(caller 1)[3], $/ } + *main::foo = sub { whoami() }; + foo(); __END__ main::__ANON__
    2. DProf:
      *main::foo = sub { sleep 1; }; + foo() for 1..5; __END__ $ perl -d:DProf foo.pl $ dprofpp tmon.out Total Elapsed Time = 5.00996 Seconds User+System Time = 0 Seconds Exclusive Times %Time ExclSec CumulS #Calls sec/call Csec/c Name 0.00 - -0.000 5 - - main::__ANON__
    When you have a lot of different anonymous subs floating around, it's a pain in the butt to profile, because all calls to anonymous subs land in main::__ANON__ as far as DProf is concerned.

    There's a trick involving local *__ANON__, which works for caller but not DProf.

    blokhead