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


in reply to Re: File::Find incompatible with OO perl?
in thread File::Find incompatible with OO perl?

Just curious, but why would I "want the anonymous sub call to disappear from the calling stack"?
  • Comment on Re: Re: File::Find incompatible with OO perl?

Replies are listed 'Best First'.
Re: Re: Re: File::Find incompatible with OO perl?
by broquaint (Abbot) on Feb 09, 2004 at 17:26 UTC
    In case you croak (or something else that produces a stacktrace) within the the found method e.g
    use Carp 'croak'; sub exec_anon { &{$_[0]} } sub boom { eval { croak "$_[0]\->boom" }; print "trace: $@" } exec_anon sub { main->boom }; exec_anon sub { unshift @_, 'main'; goto &{main->can("boom")} }; __output__ trace: main->boom at - line 4 eval {...} called at - line 4 main::boom('main') called at - line 6 main::__ANON__ called at - line 3 main::exec_anon('CODE(0x8107e64)') called at - line 6 trace: main->boom at - line 4 eval {...} called at - line 4 main::boom called at - line 3 main::exec_anon('main', 'CODE(0x8117378)') called at - line 7
    Not terrifically important, or necessarily desired, but it can be much easier to follow things if wrapper functions are hidden away and it's safer if you're dealing with code that looks up the stack (for whatever reason). Use with caution™.
    HTH

    _________
    broquaint