WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   Perl: use vs require (http://www.wcm.at/forum/showthread.php?t=29678)

SNo0py 04.09.2001 13:31

Perl: use vs require
 
Kann mir bitte wer die Unterschiede zwischen use und require von Perl erklären??

Wozu brauche ich das eine, wozu das andere?? Vor/Nachteile???

Thx!

Bender Unit 22 04.09.2001 15:55

hoffe dass hilft http://www.perlunity.de/perl/tutorial/packages.shtml knapp über übung 1 (Schauen wir uns noch ein letztes Beispiel an, welches den Unterschied zwischen use und require aufzeigt)

helios 04.09.2001 16:36

es gibt 2 wichtige Unterschiede:

1) use bindet Module zur Compiletime ein, require zur Runtime. Fehlt ein Modul, so kommt man mit use sofort beim Programmstart drauf, bei require irgendwann, wenn das Modul benötigt wird.

2) use führt ein implizites import durch. Funktionen und Variablen aus dem eingebundenen Package müssen daher bei Verwendung nicht mehr voll qualifiziert werden (das heisst man kann den Packagenamen weglassen)

SNo0py 04.09.2001 16:43

Ich glaub nicht dass das so gut ist :)

1.) d.h. ich kann mit use keine Daten "dynamisch" einbinden, d.h. alle PM-Files eines Verzeichnisses laden?

2.) d.h. ich kann mit use keine Files laden, welche die selben Funktionen zur Verfügung stellen (brauch ich aber für meine selbstgestrickten PlugIns)

==> mit require kann ich aber keine Klassen erstellen, oder???

Apropos require: bei YaBB,... usw. werden alle Files mit require eingebunden und die angebotenen Funktionen werden auch direkt benutzt... i check gar nix mehr...

Philipp 05.09.2001 09:52

Bei "require" gibt es unter mod_perl Probleme wärend bei "use" das Modul selbst unter mod_perl problemlos geladen wird. "use" ist daher der bessere weg um Module zu laden.

Zitat:

Apropos require: bei YaBB,... usw. werden alle Files mit require eingebunden und die angebotenen Funktionen werden auch direkt benutzt... i check gar nix mehr...
Viele Scripts verwenden "require", daher laufen sie u.a. auch nicht unter mod_perl. YaBB würde ich aber nicht unbedingt als Referenz nehmen da es die Nr. 2 auf der Liste der gebannten Perl Scripts von einigen US Providern ist. Stattdessen würde ich mir www.ikonboard.com in der Version 3.0 etwas genauer ansehen :)

SNo0py 05.09.2001 10:09

Also ich hab mit YaBB überhaupt kein Problem... up and runnig auf easyserver.at => www.mbaierl.com/cgi-bin/YaBB.pl
Und die verwenden so weit ich weiß mod_perl...

@Nr. 2: was ist die Nr. 1, und was ist der Grund dafür???

helios 05.09.2001 10:22

ad 1) hmm ... ja

ad 2) that depends:
wenn du ein Modul mit use einbindest werden alle Funktionen u. Variablen, die dieses Modul exportiert, automatisch importiert.
D.h. wenn deine Module ihre Funktionen nicht exportieren kommen sie sich auch nicht in die Quere. Du musst sie halt dann, wenn du sie brauchst, qualifiziert (also mit Packagenamen) ansprechen.

zu require:
require kann auf 2 Arten verwendet werden:

a) require "meinelib.pl"
Damit wird eine Perl Library (meist *.pl) geladen. Führt auch quasi ein import durch.
Hat einige Nachteile und deshalb werden heute Perl Module verwendet.

b) require meinmodul.pm
Bindet ein Perl Modul ein.

SNo0py 05.09.2001 10:29

So, nachdem i mi jetzt goa nimma mehr auskenn... :confused: :

Ich will alle .pl/.pm (oder wie auch immer) Files in einem Verzeichnis laden (können 2 aber auch 10 sein!) und über $obj{'filename'} ansprechen können.

d.h. $obj{'filename'}->xyz(); ruf im File filename die Funktion xyz auf. Die Files müssen dann zwar alle die gleichen Schnittstellen zur Verfügung stellen, aber da wird sich schon noch was finden lassen!

Mit require $file; und anschließendem import $file; ist mir das gestern gelungen, mit use nicht -> why??

helios 05.09.2001 11:23

ich weiss nicht genau was du meinst aber ein

use $file;

kann im Unterschied zu einem

require $file;

nicht gehen, weil use zur Compiletime durchgeführt wird, also zu einem Zeitpunkt wo es noch keine Variablen gibt.

SNo0py 05.09.2001 11:29

Also kann es nur mit require gehen; und ein anschließendes import brauch ich auch...

War's doch richtig :D :D

Philipp 05.09.2001 12:01

Zitat:

Also ich hab mit YaBB überhaupt kein Problem... up and runnig auf easyserver.at => www.mbaierl.com/cgi-bin/YaBB.pl
Und die verwenden so weit ich weiß mod_perl...
Meistens ist mod_perl zwar installiert aber nicht aktiviert.

Ein mod_perl konformes Script muß mit "use strict;" beginnen. Versuche es einmal am Anfang von YaBB einzubauen und mache ein perl -c YaBB.pl

Zitat:

@Nr. 2: was ist die Nr. 1, und was ist der Grund dafür???
Nr. 1 = Ultimate Bulletin Board 6.0

Gebannt wurden sie da beide den Server zu sehr überlasteten. Normalerweise sind 100-200 Accounts pro Server. Wenn da ein Grossteil UBB6 oder YaBB verwendet hat selbst der Leistungsfähigste Server Performanceprobleme. Die entsprechenden Provider empfehlen bei Message Boards den Einsatz von PHP/MySQL Lösungen da sie etwas schonender mit den Resourcen umgehen.

SNo0py 05.09.2001 13:35

Ne, use strict verwende ich net -> also wahrscheinlich auch kein mod_perl :)

Und: allzuviele Zugriffe hab ich ja eh net... ;)

www.ikonboard.com basiert doch auch auf Perl, oder?? Auf PHP mal nicht... was ist dann der Unterschied zu YaBB??

Philipp 05.09.2001 19:45

Zitat:

www.ikonboard.com basiert doch auch auf Perl, oder?? Auf PHP mal nicht... was ist dann der Unterschied zu YaBB??
Der Unterschied von Ikonboard 3.0 gegenüber YaBB ist das Ikonboard wahrscheinlich das beste Perl Message Board Script ist das es gibt.

Es ist u.a. komplett mod_perl Kompatibel daher läuft es mit use strict; und ladet alle Erweiterungen als Perl Module nach. Ausserdem unterstützt es mehrere Backends von normalen Textfiles (Flatfiles) bis hin zu SQL Datenbanken (MySQL) :)

YaBB 2.0 dagegen soll ein kompletter Rewrite in PHP werden und MySQL als backend verwenden.

SNo0py 06.09.2001 07:34

Zitat:

Der Unterschied von Ikonboard 3.0 gegenüber YaBB ist das Ikonboard wahrscheinlich das beste Perl Message Board Script ist das es gibt.
Ansichtssache... ;)


Ja, aber jetzt hab ich mein kleines und feines Script schon... mal schauen, vielleicht steig ich ja um... Gratis wären ja beide...

SNo0py 06.09.2001 07:56

Ich hab mich jetzt noch ein wenig beim Ikonboard umgesehen; die Features sind eh die selben, wie bei (fast) jedem anderen Board; und da mein YaBB gerade so gut läuft, stell ich net um, ausser es kann mir wer gute Gründe nennen (Serverbelastung ist mir wurscht ;))

lg
Mike

Philipp 06.09.2001 21:00

Zitat:

Ich hab mich jetzt noch ein wenig beim Ikonboard umgesehen; die Features sind eh die selben, wie bei (fast) jedem anderen Board;
Die Features sind vielleicht fast die selben aber die Codequalität gehört zum besten was es derzeit in Perl gibt. Daher ist es gut zum Lernen von Perl.


Alle Zeitangaben in WEZ +2. Es ist jetzt 21:28 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag