I am ... wondering if this can be done without the use of a module
Um perhaps it can but why on earth would you? A good place to find out about Roles in Perl is the Moose Manual. There are other ways to share related pieces of functionality *across* your class hierarchy but they will be considerably more work for the programmer, won't scale well across a large code base and will be harder to debug. If you're not going to use the power of pre-written code from CPAN then you're not using Perl to its full advantage.