On 09/13/2017 05:01 PM, Brandon Allbery wrote:
On Wed, Sep 13, 2017 at 7:56 PM, ToddAndMargo <toddandma...@zoho.com <mailto:toddandma...@zoho.com>> wrote:

    I am trying to convert this from Perl 5:

         my $WhoCalledMe = ( caller(0) )[1];

    I use it inside a sub to determine who called the sub.

    How is this done in P6?


You want the callframe method. Note that it can be a bit more complex than perl 5's caller because there are more things that act like call frames. https://docs.perl6.org/routine/callframe (but most of the actual documentation is at https://docs.perl6.org/type/CallFrame).

Hi Brandon,

Would this be what I am looking for?


for 1..* -> $level {
    given callframe($level) -> $frame {
        when $frame ~~ CallFrame {
            next unless $frame.code ~~ Routine;
            say $frame.code.package;
            last;
        }
        default {
            say "no calling routine or method found";
            last;
        }
    }
}


And I can't put it in a pm6 or I would get the next
level down.

Thank you for the help!

-T

Reply via email to