Wie erstelle ich ein hybrides (Skript und Modul) Modul??
Inhalt:
In letzter Zeit kam häufiger die Frage danach, wie man ein hybrides Modul erstellen kann. Also ein Modul, das sowohl Modul als auch Skript sein kann. Ich habe hier mal ein Beispiel
Modul
package TestModul;
sub new{
bless {},$_[0];
}
sub test{
print "test\n";
}
my $scalar = caller;
print "Caller: $scalar\n";
return 1 if(caller);
test();
Skript
#!/usr/bin/perl
use strict;
use warnings;
use lib qw(.);
use TestModul;
my $test = TestModul->new();
$test->test();
Ausgabe
C:\community>perl TestModul.pm
Caller:
test
C:\community>perl modultest.pl
Caller: main
test
Wenn man es als Modul benutzt - wie beim ersten Aufruf - wird die 1 zurückgegeben, weil caller
den Namen des packages zurückliefert, von dem aus das Modul benutzt wird. der Aufruf test() wird also nicht mehr ausgeführt.
Wird es aber als Skript ausgeführt, liefert caller im skalaren Kontext nichts zurück und der Aufruf
test() wird ausgeführt.
Ergänzungen, Kommentare
Kommentare werden am besten in folgender Form vorgenommen, damit
sie im Inhaltsverzeichnis angezeigt werden (natürlich ohne das <verbatim>):
---+++ Main.??? - 14 Jul 2003 - Betreff