Schrift
[thread]5748[/thread]

Perl Module /CPAN: Wie geht das nun ?

Leser: 2


<< >> 6 Einträge, 1 Seite
BrownWolf
 2003-09-23 23:56
#55284 #55284
User since
2003-08-15
308 Artikel
BenutzerIn
[default_avatar]
Also ich hatte die Frage schon einmal gestellt und keine Antwort darauf bekommen.
Ab und zu braucht man ja ein Modul von CPAN und möchte es dann mitbenutzen.

1 Frage) Darf man das Modul ändern ? Also nur die POD Kommentare (ca 20 KB) entfernen ?
Dadurch wird das Modul schon einiges kleiner ....

2 Frage) Am Anfang steht ja immer:

Code (perl): (dl )
package Verzeichnis::Modul;


Und mitten im Programm stehen die Subroutinen so:

Code (perl): (dl )
1
2
3
4
5
sub Verzeichnis::Modul {

...

}


Jetzt möchte ich dieses Modul aber nicht in den Ordner "Verzeichnis" packen sondern in meinen eigenen Ordner "Modules".
Wie rufe ich dann das Modul auf ?
Iss klar mit:

Code (perl): (dl )
use lib qw(Modules); # Ordner Modules zu @INC hinzufügen


Und dann mit use Modul einbinden.
Das Problem ist nur das man dann keine einzige Subroutine mehr aufrufen kann ....

Weil alle als Verzeichnis::SUB angegeben sind und nicht als Modules::SUB !!

Hoffentlich versteht mich jemand und kann mir helfen ;)
Code (perl): ()
1
2
3
sub _{s;;xrqIpiql\\{}p{pl{R>rl{N{}gjwpkssq]>rl{N;;;*{{}=*{_};;
&#36{{}={q{{{}}}=>[reverse+split+reverse+q;}{;]};&#36{{}->{q{{{}}}}->[@{{}];}
&#36{{}=reverse+_(q{{}}=>q{{}})^chr(30)x+length&_(q{{}}=>,q{{}})and+print;
havi
 2003-09-24 00:03
#55285 #55285
User since
2003-08-04
2036 Artikel
BenutzerIn
[Homepage]
user image
Hi!

Ich hatte so ein ähnliches Problem mal mit selbst programmierten Modulen - die wollt ich in einem eigenen Verzeichnis haben!

Habs dann so gelöst!

Ein Verzeichnis in perl\site\lib erstellt (mit dem Namen GH)

In dem Verzeichnis GH hatte ich dann folgendes Modul!
Code: (dl )
1
2
3
4
5
package GH::base;

push @INC (d:\\MyPerlModule);

1;


Danach muss ich wenn ich ein selbst programmiertes Modul aufrufen will, nur folgendes machen:
Code: (dl )
1
2
use GH::base;
use MeinModulWasImVerzeichnisMyPerlModuleSteht;


Gruss
renee
 2003-09-24 00:07
#55286 #55286
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Ich glaube, dass die Frage eher so lautete: Darf ich CPAN-Module ändern??

BrownWolf will die POD entfernen und die package-Angabe abändern.

Soweit ich weiß, darf man solche Module ändern...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
havi
 2003-09-24 00:09
#55287 #55287
User since
2003-08-04
2036 Artikel
BenutzerIn
[Homepage]
user image
[quote=renee,23.09.2003, 22:07]Ich glaube, dass die Frage eher so lautete: Darf ich CPAN-Module ändern??

BrownWolf will die POD entfernen und die package-Angabe abändern.

Soweit ich weiß, darf man solche Module ändern...[/quote]
BrownWolf hat unter anderem geschrieben:

Jetzt möchte ich dieses Modul aber nicht in den Ordner "Verzeichnis" packen sondern in meinen eigenen Ordner "Modules".
Wie rufe ich dann das Modul auf ?
Iss klar mit:

Perl  
use lib qw(Modules); # Ordner Modules zu @INC hinzufügen


Und dann mit use Modul einbinden.
Das Problem ist nur das man dann keine einzige Subroutine mehr aufrufen kann ....

Weil alle als Verzeichnis::SUB angegeben sind und nicht als Modules::SUB !!
\n\n

<!--EDIT|havi|1064347869-->
Dubu
 2003-09-24 00:44
#55288 #55288
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
Die vernuenftigste Methode waere, den Ordner "Modules" anzulegen und darin den Ordner "Verzeichnis", in den das Modul kommt. Wenn dann "Modules" in @INC liegt, wird auch Verzeichnis::Modul gefunden und die Funktion Verzeichnis::SUB darin aufrufbar.

Was das Aendern des Quelltextes angeht (bist du ueberhaupt sicher, dass sich der Laufzeitunterschied bemerkbar macht?), musst du schon die Doku jedes einzelnen Moduls konsultieren, denn nicht alle haben die gleiche Lizenz.\n\n

<!--EDIT|Dubu|1064349886-->
Strat
 2003-09-24 15:58
#55289 #55289
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
1. die doku der module entfernen bringt vielleicht ein paar tausendstel sekunden laufzeitgewinn, bringt jedoch den nachteil, dass du nicht mehr mit perldoc Modulname arbeiten kannst.
2. ob du es darfst, haengt vom modul und dessen lizenz ab. wenn du ein modul von CPAN downloadest, ist dort meistens eine Datei namens LICENCE oder so vorhanden. dort steht es meistens drinnen.
3. wenn du ein eigenes Modul schreiben willst, beginne am besten mit h2xs (da habe ich vor einigen monaten mal was darueber zusammengeschrieben, und havi hat es gerade vor ein paar tagen mal gepostet. koennte aber auch schon in den FAQs stehen). Verwende da am besten einen eigenen Namensraum, z.b. OwnModules::MyModule::Test oder so. Dann kannst du die Module auf dem CPAN-weg installieren
4. wenn du ein eigenes Verzeichnis fuer deine pm-Dateien haben willst, von dem aus die Module standardmaessig geladen werden koennen, dann kannst du entweder im programm
Code: (dl )
use lib '/home/mynick/modules/';

schreiben, oder die umgebungsvariable perl5lib (oder eventuell auch perllib) auf dieses Verzeichnis setzen
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
<< >> 6 Einträge, 1 Seite



View all threads created 2003-09-23 23:56.