WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 04.09.2001, 13:31   #1
SNo0py
Inventar
 
Registriert seit: 08.02.2000
Beiträge: 1.696


Standard 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!
____________________________________
Sex is like hacking. You get in, you get out, and you hope you didnt leave something behind that can be traced back to you.
SNo0py ist offline   Mit Zitat antworten
Alt 04.09.2001, 15:55   #2
Bender Unit 22
Elite
 
Registriert seit: 03.06.2000
Alter: 50
Beiträge: 1.373


Standard

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)
Bender Unit 22 ist offline   Mit Zitat antworten
Alt 04.09.2001, 16:36   #3
helios
Veteran
 
Registriert seit: 21.06.2001
Beiträge: 343


helios eine Nachricht über ICQ schicken
Standard

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)
____________________________________
religion is a virus from outer space
helios ist offline   Mit Zitat antworten
Alt 04.09.2001, 16:43   #4
SNo0py
Inventar
 
Registriert seit: 08.02.2000
Beiträge: 1.696


Standard

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...
____________________________________
Sex is like hacking. You get in, you get out, and you hope you didnt leave something behind that can be traced back to you.
SNo0py ist offline   Mit Zitat antworten
Alt 05.09.2001, 09:52   #5
Philipp
verXENt
 
Benutzerbild von Philipp
 
Registriert seit: 01.08.1999
Beiträge: 7.084

Mein Computer

Standard

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
Philipp ist offline   Mit Zitat antworten
Alt 05.09.2001, 10:09   #6
SNo0py
Inventar
 
Registriert seit: 08.02.2000
Beiträge: 1.696


Standard

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???
____________________________________
Sex is like hacking. You get in, you get out, and you hope you didnt leave something behind that can be traced back to you.
SNo0py ist offline   Mit Zitat antworten
Alt 05.09.2001, 10:22   #7
helios
Veteran
 
Registriert seit: 21.06.2001
Beiträge: 343


helios eine Nachricht über ICQ schicken
Standard

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.
____________________________________
religion is a virus from outer space
helios ist offline   Mit Zitat antworten
Alt 05.09.2001, 10:29   #8
SNo0py
Inventar
 
Registriert seit: 08.02.2000
Beiträge: 1.696


Standard

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

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??
____________________________________
Sex is like hacking. You get in, you get out, and you hope you didnt leave something behind that can be traced back to you.
SNo0py ist offline   Mit Zitat antworten
Alt 05.09.2001, 11:23   #9
helios
Veteran
 
Registriert seit: 21.06.2001
Beiträge: 343


helios eine Nachricht über ICQ schicken
Standard

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.
____________________________________
religion is a virus from outer space
helios ist offline   Mit Zitat antworten
Alt 05.09.2001, 11:29   #10
SNo0py
Inventar
 
Registriert seit: 08.02.2000
Beiträge: 1.696


Standard

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

War's doch richtig
____________________________________
Sex is like hacking. You get in, you get out, and you hope you didnt leave something behind that can be traced back to you.
SNo0py ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 02:03 Uhr.


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