Thread Tutorial für Module (11 answers)
Opened by bianca at 2012-12-20 12:51

GwenDragon
 2012-12-20 14:26
#164335 #164335
User since
2005-01-17
14741 Artikel
Admin1
[Homepage]
user image
2012-12-20T11:51:14 bianca
Insbesondere 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.

Code (perl): (dl )
1
2
3
4
5
6
7
our ( $VERSION, @ISA, @EXPORT, @EXPORT_OK, %EXPORT_TAGS );
use Exporter ();
@ISA         = qw(Exporter);
@EXPORT      = qw();
%EXPORT_TAGS = qw();           # eg: TAG => [ qw!name1 name2! ],
                               # optionally exported functions
@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.
Code (perl): (dl )
@EXPORT = qw($blubb &blah %boing);


Das bedeutet, dass bei
Code (perl): (dl )
use My::Module;
automatisch die Vars $blubb &blah %boing ins Programm importiert werden.

In @EXPORT_OK stehen die Methoden/Funktionen, die durch den Aufruf
Code (perl): (dl )
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
Code (perl): (dl )
 use My::Module qw(-alles);
einen ganzen Pulk an zu importierenden Elementen nennen anstatt einer ganzen langen Liste.
Code (perl): (dl )
1
2
3
4
5
%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)

View full thread Tutorial für Module