in reply to Module inheritance

Yes. The functions you define in Module1 live in Module1's namespace. To call them from Module2, you either have to
  1. Module1::function()
  2. Do the Exporter stuff
  3. Treat Module2 (and Module1) as classes with objects

They're all good solutions, but to different problems. Which solution you use depends on which problem you have.