Schrift
[thread]11398[/thread]

Addon Funktionalität mit Perl Modulen



<< >> 6 Einträge, 1 Seite
Tr0Nix
 2008-03-02 19:24
#106566 #106566
User since
2006-11-21
44 Artikel
BenutzerIn
[default_avatar]
Hallo zusammen

Ich möchte bei meinem aktuellen Projekt input und output Module durch eine XML-Konfiguration austauschen können. Die XML Konfiguration liefert zusätzlich auch noch die Modul-Abhängige Konfiguration.

Die Module selbst müssen dann einfach gewisse Funktionen implementieren (so Vererbungs-mässig bei OO Programmierung).

Vereinfacht soll dieser Code:
Code: (dl )
1
2
3
4
5
#!/usr/bin/perl -w
use strict;
use db;
&init("user","passwort");
&writeReport;


Zu folgendem werden:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
#!/usr/bin/perl -w
use strict;
use XMLConfig;

my $addon = &XMLGetAddon;

eval ("use $addon");

&init(&XMLGetConfig);
&writeReport;


Die Konfiguration hinter XMLGetAddon und XMLGetConfig kann dann beispielsweise so ausschauen:
Code: (dl )
1
2
3
4
5
6
<root>
<output module="file">
<config type="filename">test.out</config>
<config type="permissions">755</config>
</output>
</root>


Ich hab mal einen kleinen Prototypen geschrieben bei dem das prima funktionierte. Da ich dort jedoch kaum Funktionalität habe (und ich selbst noch relativ wenig Erfahrung mit Perl), wollte ich euch fragen, ob das eine saubere Methode ist. Vielleicht hat jemand auch Stichworte über Gefahren die auftreten könnten!

Geplant sind Standard-Datentypen (Hash Arrays) die übergeben und zurückgegeben werden. Ich habe also nicht vor, Namespaceübergreifende Variablen zu verwenden.

Gruess
Joel

P.S. ich hab natürlich gegoogelt, aber "dynamic module loading perl" kriegte ich vorallem DynaLoader Ergebnisse.
ptk
 2008-03-02 22:01
#106567 #106567
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Es spricht nichts dagegen, dynamisch Perl-Code nachzuladen. Wahrscheinlich bekommst du keine befriedigenden Ergebnisse bei einer Google-Suche, weil es dazu eigentlich nichts zu sagen gibt: man verwendet einfach "use" oder "require", wie du es gemacht hast. Einzig solltest du dir über Sicherheit Gedanken machen, wenn die Modulnamen aus einer externen Quelle stammen könnten.
Tr0Nix
 2008-03-02 22:22
#106568 #106568
User since
2006-11-21
44 Artikel
BenutzerIn
[default_avatar]
Danke, dann bin ich ja schonmal "beruhigt"! Ich bin noch am planen des Aufbaus der Software und wenn ich da schon Fehlannahmen treffen wuerde waer natuerlich etwas bloed!

Sicherheit ist natuerlich ein Thema, aber das geht dann wohl unter das Risiko-Kapitel.

Gruess & merci
Joel
Gast Gast
 2008-03-03 12:09
#106570 #106570
Um bestimmten Gefahren besser begegnen zu können, solltest du den Taintmode verwenden.
Zudem gibt es in Perl auch Module, die eine Sandbox wie bei CPAN:Safe bereitstellen, um es sicherer zu machen.
Struppi
 2008-03-03 12:33
#106571 #106571
User since
2006-02-17
628 Artikel
BenutzerIn
[Homepage]
user image
und ein kleiner Hinweis: die Schreibweise
Code: (dl )
&Funktion;
ist nicht mehr Zeitgemäß, du kannst auf das kaufmämnnische Und seit Ewigkeiten verzichten.
Tr0Nix
 2008-03-04 22:56
#106649 #106649
User since
2006-11-21
44 Artikel
BenutzerIn
[default_avatar]
@Gast:
Es handelt sich nicht um CGI Programmierung, dazu kommt, dass das Script auf Windows ausgefuehrt wird. Es findet also in "kontrolliertem" Rahmen statt! Danke trotzdem fuer Input!

@Struppi:
Danke :)
<< >> 6 Einträge, 1 Seite



View all threads created 2008-03-02 19:24.