in reply to Calling method inside and outside of package

Is it a right way or do I violate something?

Always call methods as methods (with the explicit $invocant->method( @args ) syntax). You will break polymorphism otherwise by subverting method dispatch. (Perl 5 inherited this silly conflation of functions and methods from Python, but at least Moose and Perl 6 fix it.)