Thread require? (5 answers)
Opened by ppm1 at 2003-11-11 20:21

kabel
 2003-11-11 22:38
#71269 #71269
User since
2003-08-04
704 Artikel
BenutzerIn
[default_avatar]
@EB: deine argumentation ist mindestens konfus. aber schön der reihe nach:

Quote
Dieses Beispiel lieferte unter Windows - dort hatte ich das Script getestet - einen Fehler, da GD nicht installiert war, obwohl $gd den Wert "1" enthielt. Daran sieht man also, dass der Perl Interpreter nicht zur Laufzeit interpretiert.

perl interpretiert sowohl zur laufzeit als auch zur compilezeit. es kommt nur darauf an, was er da interpretiert - und use gehört in die compilezeit-ecke:

Quote
It (anm: das use statement) is exactly equivalent to
BEGIN { require Module; import Module LIST; }
except that Module must be a bareword.


BEGIN blöcke sind leicht kompliziert, einer kann aber sagen, dass sie zur compilezeit ausgeführt werden (perlmod).

Code: (dl )
1
2
3
4
5
6
7
kabel@linux:~> perl
if (0) { use CGI; }
print STDOUT CGI::header ();

Content-Type: text/html; charset=ISO-8859-1

kabel@linux:~>


dagegen require:
Code: (dl )
1
2
3
4
5
6
kabel@linux:~> perl
if (0) { require CGI; }

print STDOUT CGI::header ();
Undefined subroutine &CGI::header called at - line 3.
kabel@linux:~>


Quote
Demnach funktioniert deine Methode nicht.

wonach?

Quote
Wenn du ein Modul einbinden willst - speziell jetzt auf die Art wie du es machen willst - musst du eine Abfrage in den BEGIN Block am Anfang des Scripts setzen.

??? wie will er es denn machen?

Quote
Dort kannst du via "$@" prüfen, ob ein Fehler beim Einbinden des Moduls aufgetreten ist und frühzeitig reagieren.

in $@ steht der sog. eval error.

hier ebenfalls eine diskussion use/require.
-- stefan

View full thread require?