I was surprised there isn't a cleaner way to get a sub/method names, and found https://docs.perl6.org/language/5to6-perlfunc#caller
Try this tasty morsel who-am-i () { say "I'm ", callframe(0).code.name } who-am-i; -y On Tue, May 22, 2018 at 12:41 AM, ToddAndMargo <toddandma...@zoho.com> wrote: > On 05/21/2018 11:21 PM, Siavash wrote: > >> >> https://www.nntp.perl.org/group/perl.perl6.users/2017/03/msg3423.html >> >> On 2018-05-22 06:04:47 GMT, ToddAndMargo wrote: >> >>> Hi All, >>> >>> I need to know the name of the subroutine I am in. >>> >>> This is the way I use to do it in Perl 5: >>> >>> (my $Name = (caller(0))[3] ) ~~ s{.*::}{}; >>> >>> How do I do it in Perl 6? >>> >>> Many thanks, >>> -T >>> >> > Hi Siavash, > > Oh now this is embarrassing. That was me! And I > have a keeper file on it too. > > Wait, why am I wring you again? Is Sparky still > in the navy? Is Teddy still president? You kids > get off my lawn !!! I hate when this happens. > I have a lawn? > > :'( > > -T > > My newly rediscovered notes: > > > Perl 6: > what is my program's name? > what is my sub's name? > > <code WhoTest.pl6> > #!/usr/bin/perl6 > > sub Test () { > > my $f = $?FILE; say " \$\?FILE=<$f>"; > my $g = $?FILE.IO.basename; say " \$\?FILE.IO.basename=<$g>"; > ( my $IAm = $?FILE ) ~~ s|.*"/"||; say " Regex: \$IAm=<$IAm>\n"; > > > # sub Test () { #`(Sub|58588296) ... } > my $h = &?ROUTINE.gist; > say " \&\?ROUTINE.gist=<$h>"; > $h ~~ m/' '(.*?)' '\(/; > say " Regex: This sub\'s name is <$0>"; > > &?ROUTINE.gist ~~ m/' '(.*?)' '\(/; say " A more compact way =<$0>;" > } > > > Test(); > </code> > abc > > > <code WhoIsMySub.pl6> > #!/usr/bin/env perl6 > > sub f() { put &?ROUTINE.gist; }; > > sub abc () { > say "This subroutine's ID is ", f; > print "\n"; > > &?ROUTINE.gist ~~ m/' '(.*?)' '\(/; > my $SubName = $0; > say "This subroutine is called $SubName"; > } > </code> > > > > $ WhoTest.pl6 > $?FILE=</home/linuxutil/./WhoTest.pl6> > $?FILE.IO.basename=<WhoTest.pl6> > Regex: $IAm=<WhoTest.pl6> > > &?ROUTINE.gist=<sub Test () { #`(Sub|72467224) ... }> > Regex: This sub's name is <Test> > > A more compact way =<Test>; > > Gist reference: > https://docs.perl6.org/routine/gist#class_Mu >