Thread Organisation von Klassen und Modulen auf der Festplatte (6 answers)
Opened by der_thomas at 2016-03-12 22:19

pq
 2016-03-13 13:36
#184137 #184137
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
Quote
use Foo;

Die Datei Foo.pm muss sich in einem Verzeichnis befinden, welches namentlich auch im @INC Pfad eingetragen ist. Gleichermaßen muss innerhalb der Datei package Foo; notiert sein.

Falsch. Es ist unerheblich, ob in Foo.pm ein package-statement steht, und welcher package-name es ist. Damit use Foo; funktioniert, muss das Ding nur kompilieren und einen wahren Wert zurückliefern.
Will man objektorientiert arbeiten, wird der Packagename wichtig, ja.


Quote
Merke: Das @INC Array lässt sich mit use lib qw(/home /user); manipulieren. Dieses Pragma stellt sicher, dass ein Verzeichnispfad nur einmal im Array eingetragen wird.

Diese Aussage (nur einmal eingetragen) ist doch hier nur verwirrend. Hättest du ausführlich die manuelle Manipulation von @INC erklärt, wäre das erwähnenswert. Aber der wichtigere Unterschied, der dann zu erwähnen wäre, ist, dass man mittels "use lib" @INC zur compile time ändert, während man bei manueller Manipulation von @INC einen BEGIN-block schreiben muss (oder alternativ das Modul zur Laufzeit laden muss).


Quote
Des Weiteren wird mit der Package-Deklaration package Foo::Bar; ausgedrückt, dass Bar eine Klasse ist, die von Foo erbt.

Das ist einfach nur falsch. Es gibt keinen Automatismuss, wonach Foo::Bar von Foo erbt.


Du erwähnst oben "use Modulname" und "use lib". In deinem Beispiel unten schreibst du aber das eigentliche Skript mit in die Moduldatei, wodurch "use Number" und auch "use lib" unnötig wird.
Das ist aber in der Praxis später selten sinnvoll.

Aber wozu dann überhaupt die Erwähnung oben, wenn du es im Beispiel gar nicht anwendest?
Last edited: 2016-03-13 13:38:19 +0100 (CET)
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem

View full thread Organisation von Klassen und Modulen auf der Festplatte