in reply to Do I have to export all variables and functions from my PM file?

So, you have triggered one of my pet problems: Inheriting from Exporter.

our @ISA = qw(Exporter);

You don't have to inherit from Exporter. In fact, you shouldn't (at least in my oppinion), even if it currently does not hurt most times. See also Re: Adding "sub import{}" to my module makes global symbols require an explicit package name, Re: Advice on style, Re: How to create a reusable module with Exporter [SOLVED].

The Exporter documentation wasn't really that great in this regard. It has become better, but it still suggests inheriting in the very first example. See also Re^2: Advice on style, Re^4: Advice on style, Re^2: Exporter in an OO module?, Re^2: Exporter. Correct way to override import?.

What you should do is documented in Exporting-Without-Inheriting-from-Exporter of Exporter:

use Exporter qw( import );

And that's it. No need to mess with @ISA, base, or parent, unless you need to support old perls from almost two decades ago (Exporter older than 5.57, i.e. perl older than 5.8.3).

Alexander

--
Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so". ;-)