Moin Moin!
Schon hier beginnt OOP: Zum Exportieren muss Deine package von der Superklasse Exporter erben:
require Exporter;
und ist dann selbst ein Exporter mit@ISA = qw(Exporter);
.
Cargo cult!
1. require
ist nicht nur mehr sinnlose Tipperei, sondern es lädt das Exporter-Modul erst zur Laufzeit, während use
es schon zur Compile-Zeit lädt.
2. Direkt an @ISA herumzufummeln ist seit parent (im Core seit 5.10.1 = 2009-08-23) und base (im Core seit 5.4.5 = 1999-04-29) nicht mehr nötig.
3. Um zu exportieren, muß ein Modul überhaupt nicht von Exporter erben, im Gegenteil: Man sollte das vermeiden, weil Exporter eben nicht nur aus einer import-Methode besteht, sondern noch jede Menge anderes Zeug enthält. Siehe Exporting without inheriting from Exporter.
4. Ja, die Exporter-Dokumentation ist noch voll von dem Vererbungs-Unsinn. Leider. Bug!
Alexander
Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".