in reply to Inheritance confusion

So, one way around this is to write a custom ls subroutine in the Custom::FTP module, but this seems to be "wrong" in that it's not inheritance of any kind, rather it's overriding every routine in the Net::FTP module to simply call the parent class's routine..

This isn't necessarily a bad approach, and in fact it's common enough to have a name: MockObject (see that link for references, or try googling "mock object testing").