The reason not to use Exporter would be to easily identify
which module contains the body of the subroutine that you are
calling. If you create many modules and then export them
all into the same namespace it might get confusing about
which subroutine belongs with which module. Also, it helps
to avoid the case of two modules exporting a subroutine
with the same name. Just something to keep in the back of
your mind as you develop the code.
As far as the object goes, I think you have a good grasp of
what an object is. For a package to define an object, it must
contain a subroutine that returns the blessed reference. This
is typically named "new" but it does not have to be.
I may have caused some confusion by using the terms module and package
interchangeably - which they are (for the most part) in my own mind.
I am not sure of what the actual difference between the terms