Thread GED: Module und Namensräume: wie umgeht man Namenskonflikte? (34 answers)
Opened by Crian at 2004-02-10 23:07

ptk
 2004-02-10 20:57
#39480 #39480
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
[quote=Crian,10.Feb..2004, 18:45]Ich habe das Problem, dass in meinem GED-Projekt ein Modul enthalten ist, das den gleichen Namen besitzt wie eines auf dem CPAN.

Nun wurde mir geraten, meine Module in den Namensraum GED:: zu stellen, aber eigentlich möchte ich nicht, dass dann alle Aufrufe im Quellcode so lang werden. Hmmm ich glaub das sind gar nicht so viele.
[/quote]
Wenn es sich um ein objekt-orientiertes Modul handelt, wird nur der Konstruktoraufruf laenger. Ansonsten sollte mal wohl den Exporter und @EXPORT_OK bemuehen.
Quote
Wie macht man das dann, setzt man die Namen der Pakete in den entsprechenden Moduldateien um und verschiebt die Module in ein GED Unterverzeichnis? (Ich glaub so oder ähnlich habe ich das schon mal gemacht.)

Oder gibt es noch andere Wege, die Namenskonflikte zu umgehen (mal abgesehen davon den Modulen andere Namen zu geben)?


Guck dir mal das Layout von http://prdownloads.sourceforge.net/ptktool....ownload and. Dort gibt es ein Verzeichnis lib/Earthclock, wo Module, die nur sinnvoll zusammen mit dem Programm benutzbar sind, abgelegt sind. Wenn man jetzt im Skript

Code: (dl )
1
2
use FindBin;
use lib "$FindBin::Bin/lib/Earthclock";

schreibt, kann man auf diese Module ohne den Prefix "Earthclock::" zugreifen, also
Code: (dl )
use Win32util
statt
Code: (dl )
use Earthclock::Win32Util


Damit das auch funktioniert, nachdem das Programm installiert wurde, solltest du in den ersten BEGIN-Block von earthclock schauen.

View full thread GED: Module und Namensräume: wie umgeht man Namenskonflikte?