Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]4502[/thread]

GED: Module und Namensräume: wie umgeht man Namenskonflikte? (Seite 2)



<< |< 1 2 3 4 >| >> 35 Einträge, 4 Seiten
Crian
 2004-02-10 19:45
#39478 #39478
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
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.

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)?
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
Crian
 2004-02-10 20:27
#39479 #39479
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
[quote=Ishka,10.02.2004, 19:25]Wenn du nichts dagegen hast, werd ich von meiner Downloadseite aus ein Link auf deine Downloadseite setzen - ich find das Programm nämlich cool :) (vor 3 Jahren hätte ich das sogar mal brauchen können...)[/quote]
Was sollte ich da dagegen haben :D

Danke :)

Edit: Wo finde ich denn Deine Downloadseite?


[quote=sri,10.02.2004, 19:21]Ich würde dir sogar raten in den Namensraum Graph::GED:: zu wechseln.
Math::Graph:: oder Math::GED:: würde sich auch anbieten.

Dann spräche auch nichts dagegen deine Module später mal ins CPAN zu stellen. ;)[/quote]

Ich glaub das werd ich bei der nächsten Änderung machen. benenne ich denn dann einfach die Paketnamen innen um und lass die Dateien wo sie sind, oder leg ich dafür besser ein Verzeichnis Graph/GED/ an?\n\n

<!--EDIT|Crian|1076437823-->
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
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.
Ishka
 2004-02-10 20:58
#39481 #39481
User since
2003-08-04
771 Artikel
HausmeisterIn
[Homepage] [default_avatar]
:)
Dann kommt hier auch gleich meine Wishlist:
- Punkt einfügen, der mit allen Punkten verbunden ist
- Punkt verschieben und dabei alle mit diesem Punkt verbundene Punkte mitverschieben
- gleiches mit Löschen
- bei gerichteten Graphen: von einem Punkt aus alle erreichbaren einfärben
- gleiches mit löschen (ebenso: alle nicht-erreichbaren löschen)
- alternativ zu beiden vorhergehenden Vorschlägen: Punkten Flags geben, die man über Auswahl ändern kann (ala: Alle mit dem als nächsten anzuklickenden Punkt verbundenen Punkte flag xyz um eins erhöhen, ...) und über diese Flags Punkte auswählen und zB. löschen, verschieben und was auch immer
sub z{if(@_){1while$x[$k=rand 10];t($t=$x[$k]=1)}print map"$z[$x[$_]]$_".($_%3?
"":"\n"),1..9}sub t{$j=0;$x[$_+1]==$t&&($j+=2**$_)for 0..8;z,die"Gewinner $z[$t]
"if grep$_==($j&$_),7,56,73,84,146,273,292,448;z,die"Gleichstand\n"if@x>9&&!grep
!$_,@x}@x=4;@z=qw{. [ (};z$^T&1;while(<>){next if$_>9||$x[$_];t$t=$x[$_]=2;z 1}
Crian
 2004-02-10 22:21
#39482 #39482
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
Sag mal, unter Programmieren führen alle Verweise auf das Forum auf die alte hier nicht genannte Adresse, unter der wir früher kommunizierten, ist das Absicht? :D

Und wenn man auf den Link zum GED klickt kommt Seite nicht gefunden :(\n\n

<!--EDIT|Crian|1076444618-->
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
sri
 2004-02-10 20:21
#39483 #39483
User since
2004-01-29
828 Artikel
BenutzerIn
[Homepage] [default_avatar]
[quote=Crian,10.02.2004, 18:45]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.[/quote]
Ich würde dir sogar raten in den Namensraum Graph::GED:: zu wechseln.
Math::Graph:: oder Math::GED:: würde sich auch anbieten.

Dann spräche auch nichts dagegen deine Module später mal ins CPAN zu stellen. ;)\n\n

<!--EDIT|sri|1076437502-->
ptk
 2004-02-11 20:28
#39484 #39484
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
[quote=esskar,11.Feb..2004, 18:25]ich hatte YML vorgeschlagen, damit man die Daten besser in anderen Sachen einbinden kann![/quote]
Du meinst wohl XML, nicht YML?

Da es sich bereits um eine Datenstruktur handelt, ist es wesentlich einfacher, mit einem Serialisierungsformat als einer Markup Language zu arbeiten. Man muss sich nur angucken, welche Klimmzuege (sprich: Spezialoptionen) man mit XML::Simple machen muss, wenn man in der Lage sein will, die Daten auch 1:1 deserialisiert zu bekommen. Und das erzeugte XML sieht dann alles andere als schoen aus.

Wenn du mit andere Sachen andere Programmiersprachen meinst: YAML-Bibliotheken gibt es auch fuer andere Sprachen.

Uebrigens hatte ich vorhin nicht recht gehabt: YAML bedeutet "YAML ain't markup language" :-)
Crian
 2004-02-10 21:29
#39485 #39485
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
So, es gibt eine neue Version, in der die Module in Graph::GED:: verschwunden sind und der Komma-Fehler behoben ist.

@Ishka: Danke für die Wunschliste, die häng ich gleich mal an die Todo-Datei, kann aber keine zügige Abarbeitung versprechen ;)

Edit: In der nächsten Version kannst Du Deine Wunschliste dann wenigstens schonmal unter Hilfe -> Todo bewundern :D\n\n

<!--EDIT|Crian|1076441542-->
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
Ishka
 2004-02-10 23:39
#39486 #39486
User since
2003-08-04
771 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Ist wohl sinnvoll - änder aber auch den Titel
sub z{if(@_){1while$x[$k=rand 10];t($t=$x[$k]=1)}print map"$z[$x[$_]]$_".($_%3?
"":"\n"),1..9}sub t{$j=0;$x[$_+1]==$t&&($j+=2**$_)for 0..8;z,die"Gewinner $z[$t]
"if grep$_==($j&$_),7,56,73,84,146,273,292,448;z,die"Gleichstand\n"if@x>9&&!grep
!$_,@x}@x=4;@z=qw{. [ (};z$^T&1;while(<>){next if$_>9||$x[$_];t$t=$x[$_]=2;z 1}
ptk
 2004-02-11 13:45
#39487 #39487
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Besser noch, wenn es YAML waere...
<< |< 1 2 3 4 >| >> 35 Einträge, 4 Seiten



View all threads created 2004-02-10 23:07.