@EB: deine argumentation ist mindestens konfus. aber schön der reihe nach:
QuoteDieses 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:
QuoteIt (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).
kabel@linux:~> perl
if (0) { use CGI; }
print STDOUT CGI::header ();
Content-Type: text/html; charset=ISO-8859-1
kabel@linux:~>
dagegen require:
kabel@linux:~> perl
if (0) { require CGI; }
print STDOUT CGI::header ();
Undefined subroutine &CGI::header called at - line 3.
kabel@linux:~>
QuoteDemnach funktioniert deine Methode nicht.
wonach?
QuoteWenn 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?
QuoteDort 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