in reply to $self->do_it("now") question

You can use can to get the coderef of the method then Data::Dumper (and $Data::Dumper::Deparse) to dump the coderef. This should give you enough to determine where and how the method get defined.
#!/usr/bin/env perl use Data::Dumper; use strict; use warnings; my $yada=Yada->new(); my $ref=$yada->can('yada'); $Data::Dumper::Deparse=1; warn Data::Dumper->Dump([\$ref],[qw(*ref)]),' '; package Yada; use strict; use warnings; sub new { my ($class,@args)=@_; return bless {},$class; }; sub yada { my $self=shift; warn Data::Dumper->Dump([\$self],[qw(*self)]),' '; };
which when run returns
c:\Users\Clueless>perl can.pl $ref = \sub { package Yada; use warnings; use strict; my $self = shift(); warn 'Data::Dumper'->Dump([\$self], ['*self']), ' '; }; at can.pl line 10.