2012-12-20T11:51:14
biancaInsbesondere die Fragen
- Syntax beim Export von Funktionsnamen
- Syntax zur Definition von Prerequieries
- Generelle Syntax und Aufbau des Codes
Ich versuche mal -- bin keine gute Lehrerin ;) -- das zu erklären.
1. Das Modul
Exporter stell diverse Funktionen zu Verfügung, mit denen das Modul exportfähiges bekannt macht.
our ( $VERSION, @ISA, @EXPORT, @EXPORT_OK, %EXPORT_TAGS );
use Exporter ();
@ISA = qw(Exporter);
@EXPORT = qw();
%EXPORT_TAGS = qw();
@EXPORT_OK = qw();
Funktionsnamen und andere Variablen werden als exportierfähig bekannt gemacht, in dem diese Namen in die *EXPORT... Variablen geschrieben werden.
In
@EXPORT stehen die Funktionen, Variablen etc. die automatisch in andere Programme importiert werden.
@EXPORT = qw($blubb &blah %boing);
Das bedeutet, dass bei
automatisch die Vars $blubb &blah %boing ins Programm importiert werden.
In
@EXPORT_OK stehen die Methoden/Funktionen, die durch den Aufruf
use My::Module qw(&func1 &func2 %hasch @arry);
im Programm verwendet werden sollen. Damit werden &func1 &func2 %hasch @arry importiert.
In
%EXPORT_TAGS kannst du quasi Gruppen definieren, die dann in andere Programme importiert werden. Dann kannst du nämlich mit
use My::Module qw(-alles);
einen ganzen Pulk an zu importierenden Elementen nennen anstatt einer ganzen langen Liste.
%EXPORT_TAGS = (
-alles => [ qw(&dieses $jenes %dies @das %foo $bar &baz &boo) ],
-min => [ qw(&minimalfunc $min) ],
BOOH => [ qw(&boo &die $errornum @errors ]
);
In Siehe
http://perldoc.perl.org/Exporter.html#Good-Practic... kannst du nachlesen wie sinnvoll vorgegangen wird beim befüllen der *EXPORT... Variablen in Modulen.
2. Definition von Prerequieries
Wie du die im Modul definierst? Mit use.
Oder was meist du?
3. Generelle Syntax und Aufbau des Codes
Tja, das machen Leute verschieden.
Die Funktion zur Erzeugung eines Objects sollte immer
new heißen.
Die variable, die das Objekt beinhaltet wird oft $self genannt.
Um möglicherweise selbst im Modul aufzuräumen, sollte eine Methode DESTROY existieren.
Jede Methode/Funktion sollte vorangestellt einen POD-Abschnitt als Dokumentation des Aufrufs etc. haben.
Siehe auch Perl Best Practices
http://alvar.a-blast.org/vortraege/perl-workshop/p...
//EDIT: Kleines druchzuprobierendes beispiel findes sich auf
https://sites.google.com/site/arjunwebworld/Home/p...
Das ist nur wirklich ein grober Ausriss an (ungelenk erklärter) Informationen von mir.
Last edited: 2012-12-20 14:34:07 +0100 (CET)