in reply to Re^2: Exporter/@ISA confusion
in thread Exporter/@ISA confusion

You are correct that Exporter is used to allow users to selectively import functions from a module. That said, you don't need to do that with an OO module. The object itself effectively does that when it is called on a method. There is no need to export (or make available for export) an OO method.

There is no need to export a function, though. Any sub-routine in a module can be called directly by means of using the package name, i.e. My::Package::some_function{}. This form of usage is becoming more popular that taking a chance on namespace collisions by exporting some_function().

It is the same with OO packages. A blessed object can call any method defined in the package without it being exported first: $obj->some_function() is effectively making a call to My::Package::some_function( $obj ) (but a blessed object has a few more properties, of course.)

There are things that can be done to essentially hide sub-routines from being available that way, but that is a different topic. :)

You must always remember that the primary goal is to drain the swamp even when you are hip-deep in alligators.